URL來自Play Framework 2的表單。我想檢查URL是否真的存在。播放框架URL驗證器?
所以它似乎可以通過結合兩個接近完成。
在模型中是否有內置的類似功能使用註釋?
How to create a custom validator in Play Framework 2.0?
How to check if a URL exists or returns 404 with Java?
編輯:賞金可以提供實現URL驗證的(不是內置的)。
URL來自Play Framework 2的表單。我想檢查URL是否真的存在。播放框架URL驗證器?
所以它似乎可以通過結合兩個接近完成。
在模型中是否有內置的類似功能使用註釋?
How to create a custom validator in Play Framework 2.0?
How to check if a URL exists or returns 404 with Java?
編輯:賞金可以提供實現URL驗證的(不是內置的)。
基本上你需要執行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;
}
}