2016-04-29 40 views
3

私のJavaコード内の特定のURLのHTTP要求に接続中に問題が発生しました。例えば:http://www.linkedin.com。これにより、Server Not availableエラーがスローされます。 (TimeOutException)。 しかし、私はにResponseCodeが301または302HTTPからHTTPSへのリダイレクトHTTPURLConnectionを使用したJavaでのリダイレクト

コードスニペットであれば、私の接続は、Locationヘッダの値にHTTPリクエストをリダイレクトする:

HttpURLConnection urlConn =(HttpURLConnection) new URL(url).openConnection(); //For eg : http://www.linkedin.com 
    urlConn.setConnectTimeout(10*1000); 
    urlConn.setReadTimeout(10*1000); 

    boolean redirect = false; 
    int status = urlConn.getResponseCode(); //No response. Throws exception 
    if (status == HttpURLConnection.HTTP_MOVED_TEMP || status == HttpURLConnection.HTTP_MOVED_PERM) 
    { 
    redirect = true; 
    } 

    String contenttype = urlConn.getContentType(); 

    if(redirect) 
    { 
    String newUrl = urlConn.getHeaderField("Location");//No I18N 
    urlConn = (HttpURLConnection) new URL(newUrl).openConnection(); 
    urlConn.connect(); 
    contenttype = urlConn.getContentType(); 
    } 
+0

タイムアウト例外は、リダイレクトに失敗したことを示すものではありません。 HttpUrlConnectionは、30xコードに基づく自動リダイレクトを行います。接続がSYN_SENTステータスを確立しようとしているときにネットワーク 'netstat -na'を確認してください。 – Jan

+1

ネットワーク上にプロキシが実装されている場合は、[this](http://stackoverflow.com)で説明したようにSSLコンテキストでこれを実装してみてください。/questions/1511674/how-do-a-send-an-https-request-through-a-proxy-in-java)の投稿を参照してください。 – redoc

答えて

1

あなたのコードは私のために動作します。明らかに、あなたはいくつかのネットワーク問題に直面しています。

http://www.linkedin.comはお使いのブラウザで動作しますか? 「はい」の場合は、プロキシを使用しているかどうかを確認できます。

関連する問題