2011-10-23 68 views
1

我需要檢查一組Intranet站點。我試圖使用下面的代碼。 (剛剛通過在互聯網上隨機搜索獲得此代碼)。我在我的行動課上調用了這個方法。但是進入例外部分的大多數網站。即使我能夠從我的瀏覽器打開這些網站,我也獲得了協議例外和UnknownHostExceptionJava Struts - Dead Link Checker

代碼以供參考:

public boolean isLive(String link) { 
    HttpURLConnection urlConnection = null; 
    try { 
    URL url = new URL(link); 
    urlConnection = (HttpURLConnection) url.openConnection(); 
    urlConnection.setRequestMethod("HEAD"); 
    urlConnection.setConnectTimeout(5000); /* timeout after 5s if can't connect */ 
    urlConnection.setReadTimeout(5000); /* timeout after 5s if the page is too slow */ 
    urlConnection.connect(); 
    String redirectLink = urlConnection.getHeaderField("Location"); 
    if (redirectLink != null && !link.equals(redirectLink)) { 
     return isLive(redirectLink); 
    } else { 
     return urlConnection.getResponseCode() == HttpURLConnection.HTTP_OK; 
    } 
    } catch (Exception e) { 
    return false; 
    } finally { 
    if (urlConnection != null) { 
     urlConnection.disconnect(); 
    } 
    } 
} 

回答

0

我覺得跟代碼沒有問題。 你有5秒

urlConnection.setConnectTimeout(5000) 

任何查詢需要5秒鐘以上,將被視爲死link.Your瀏覽器比你的代碼更長的超時,所以你能夠瀏覽在這些網站的連接超時瀏覽器

0

如果您收到協議例外和未知主機例外情況,我們需要了解更多信息才能提供幫助。您的機器是否配置爲通過代理?您的主機定義是否不會被應用容器的用戶共享?

此外,請考慮使用像HttpClient這樣的東西來包裝這樣的東西,而不是手動做;工作太多了。