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();
}
タイムアウト例外は、リダイレクトに失敗したことを示すものではありません。 HttpUrlConnectionは、30xコードに基づく自動リダイレクトを行います。接続がSYN_SENTステータスを確立しようとしているときにネットワーク 'netstat -na'を確認してください。 – Jan
ネットワーク上にプロキシが実装されている場合は、[this](http://stackoverflow.com)で説明したようにSSLコンテキストでこれを実装してみてください。/questions/1511674/how-do-a-send-an-https-request-through-a-proxy-in-java)の投稿を参照してください。 – redoc