2011-01-26 74 views
1

在Java中检测损坏的URL(HTTP 404)的最有效方法是什么?我想循环做这件事,并尽可能缩短时间。在Java中高效检测损坏的URL

+1

定义“破损的URL”! – 2011-01-26 09:55:56

+1

可能你需要看看http://stackoverflow.com/questions/4177864/checking-a-url-exist-or-not – 2011-01-26 09:58:43

回答

1

有很多不同的方式,其中URL可以被打破:

  • 语法无效
  • 包含一个不存在的域
  • 服务器不可用
  • 服务器不接受连接
  • 服务器响应错误

除了第一个,所有这些可能需要相对较长的时间(平均可能超过一秒),并且由于您正在与另一台计算机进行通信,所以无法加快速度。

您唯一能做的就是使用thread pool并行检查多个URL。

2

你只能在请求URL之后检测到404:你将得到一个包含代码的头(200或301用于重定向,或404用于缺失文件),你可以检查它。

所以你必须做的请求,并等待可能的404

有低于一个相当不错的评论不应被跳过,所以我在这里重复它: 可能的优化(在现有URL的情况):使用HEAD请求而不是GET。

0

您可以建立URL连接,通过捕获异常并检查HTTP状态代码来验证URL是否中断。如果不抛出异常并且HTTP状态为200,则URL可以。

但要小心!有时,URL被破坏,但应用程序返回状态为200的可读错误页面。 例如,www.somecompany.com网站存在,但www.somecompany.com/foo.html页面不再存在。当你试图到达那里时,你会得到“页面不存在”的消息,但HTTP状态是200.这可以通过仅解析页面内容来解决(有时)。