2011-10-23 6 views
1

設定済みのイントラネットサイトを確認する必要があります。私は以下のコードを使用しようとしました。 (ちょうどインターネット上のランダム検索でこのコードを手に入れました)。私は自分のアクションクラスでこのメソッドを呼び出しました。しかし、サイトのほとんどは例外部分に入っています。プロトコルの例外とUnknownHostExceptionを取得していましたが、ブラウザからこれらのサイトを開くことはできました。参照用Java Struts - デッドリンクチェッカー

コード:

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のようなものを使用して手動で行うのではなく、このようにまとめておくことを検討してください。あまりにも多くの仕事。

関連する問題