2012-02-12 64 views
1

請參閱我必須檢查50+個網址以驗證有效性,並且我假設捕獲超過50個例外情況是有點過分。有沒有一種方法來檢查一堆URL是否有效,而沒有將其封裝在try catch中以捕獲異常?另外,在Android中,類「UrlValidator」不存在(但它確實存在於標準的java中),並且存在UrlUtil.isValidUrl(String url),但是該方法似乎非常滿意,只要它包含http:// ...任何建議?檢查URL是否在Android中有效,但沒有捕獲異常?

+1

您如何定義有效性?它是否需要符合規範,還是要執行DNS和/或HTTP請求以確保它引用了有效的資源?此外,如果您接受以前問題的一些答案,它將幫助您獲得更多答案。 – 2012-02-12 12:37:27

+0

如果URL存在(即如果它不加載或返回404錯誤或類似的東西)。 – ZimZim 2012-02-12 12:38:51

+0

http://stackoverflow.com/questions/9198158/android-doesnt-recognize-org-apache-commons-validator和http://stackoverflow.com/questions/2230676/how-to-check-for-a-valid -url-in-java – 2012-02-12 12:39:53

回答

6

該解決方案確實能夠捕獲異常,但其他人可能會發現它很有用,並且不需要任何庫。

public boolean URLIsReachable(String urlString) 
{ 
    try 
    { 
     URL url = new URL(urlString); 
     HttpURLConnection urlConnection = (HttpURLConnection) url 
       .openConnection(); 
     responseCode = urlConnection.getResponseCode(); 
     urlConnection.disconnect(); 
     return responseCode != 200; 
    } catch (MalformedURLException e) 
    { 
     e.printStackTrace(); 
     return false; 
    } catch (IOException e) 
    { 
     e.printStackTrace(); 
     return false; 
    } 
} 
+0

很久以前我問過這個問題,現在我對Android/Java有更多的經驗,所以我可以說這個答案確實是可以做到這一點的少數答案之一。 else語句不是必需的。感謝你的回答! – ZimZim 2013-05-07 11:21:58

+0

我注意到很久以前有人問我,我發現自己尋找一個簡單的解決方案來解決同一個問題,所以我想我會發布它,以防其他人發現它有用:) – 2013-05-21 23:40:41

+1

這不需要做異步?只是在UI線程規則中打開一個免於互聯網的連接? – Tonithy 2013-06-28 23:53:45