在Java中检测损坏的URL(HTTP 404)的最有效方法是什么?我想循环这样做,尽可能少花时间。
答案 0 :(得分:2)
您只能在请求URL后检测到404:您将获得带有代码的标题(200或301用于重定向,或404用于丢失文件),您可以检查它。
所以你必须做这个请求并等待可能的404。
下面有一个相当不错的评论不应该被跳过,所以我在这里重复一遍: 可能的优化(在现有网址的情况下):使用HEAD请求而不是GET。
答案 1 :(得分:1)
可以通过多种方式破解URL:
除了第一个,所有这些都需要相当长的时间(平均可能超过一秒),并且由于您正在与另一台计算机通信,因此无法加快速度。
您唯一能做的就是使用thread pool并行检查多个网址。
答案 2 :(得分:0)
您可以通过捕获异常并检查HTTP状态代码来建立URL连接,以验证URL是否已损坏。如果未抛出异常且HTTP状态为200,则URL正常。
但要小心!有时URL被破坏但应用程序返回状态为200的人类可读错误页面。 例如网站www.somecompany.com存在,但页面www.somecompany.com/foo.html不再存在。当您尝试到达那里时,您会收到消息“页面不存在”但HTTP状态为200.这可以通过仅解析页面内容来解决(有时)。
答案 3 :(得分:0)
我写了一个Github动作,可以通过在合并或更新之前测试所有链接来帮助进行持续集成。 gitHub操作读取给定扩展名输入的所有脚本,提取所有链接并逐个测试它们。该操作也可以在GitHub市场上使用,以在GitHub托管项目中使用:
https://github.com/marketplace/actions/urls-checker
脚本在python中,因此实际上您只需很少的更改就可以在本地使用它们:https://github.com/SuperKogito/URLs-checker
如果发现有用的话,请随意拨叉并加注星标;)