2011-01-26 69 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.這可以通過僅解析頁面內容來解決(有時)。