2013-10-09 64 views

回答

4

基本上你需要執行HTTP HEAD請求用於所述目標URL,並檢查,如果你有一個可接受的響應代碼。可接受的響應代碼可能是正確的(200),臨時移動(???)和其他代碼,如果不是,現在至少很快就會導致頁面。

爲什麼HEAD?因爲GET將下載整個頁面,並且HEAD將僅下載HTTP標頭。在這種情況下,這將花費更少的時間和時間不是朋友。 驗證應該很快完成,並且發出HTTP請求需要時間。在那幾秒鐘(或更多,取決於服務器和網絡負載)期間,用戶會想知道發生了什麼並且感到沮喪。除非您可以顯示其中一個動畫進度指示器,讓他知道驗證其輸入需要一些時間。

你應該這樣做,就像那些密碼強度驗證程序,其中值在後臺AJAX調用中驗證,一旦焦點離開輸入控件,並且在顯示結果的一側會顯示一個動畫指示符。同時用戶可以填寫其他信息。

代碼將是這樣的:

public class UrlExistenceValidator ... { 
    public boolean isValid(Object object) { 
     if (!(object instanceof String)) { 
      return false; 
     } 

     final String urlString = (String) object; 

     final URL url = new URL(urlString); 
     final HttpURLConnection huc = (HttpURLConnection) url.openConnection(); 
     huc.setRequestMethod("HEAD"); 
     huc.connect(); 

     final int code = huc.getResponseCode(); 
     return code != 404; 
    } 
}