2017-06-07 17 views
0

私はJavaで1つのサイトがオンラインかどうかを確認するアプリケーションを開発しています。 は私がして、HTTPレスポンスを取得:は、URLがリダイレクトしているかどうかを知ることができます

URL url = new URL("http://www.example.com"); 
HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 

しかし、私はそれがリダイレクトされたURLにアクセスして、HTTP応答は常に301であるとき、私はサイトがリダイレクトされた新しいURLを取得したいです。出来ますか?

+0

を。 –

+0

[JavaのURLConnectionを使用して応答ヘッダーの場所を取得できません]の可能な複製(https://stackoverflow.com/questions/3786161/cant-get-response-header-location-using-javas-urlconnection) –

+1

[ Java - URLのリダイレクトされたURLを見つける方法?](https://stackoverflow.com/questions/2659000/java-how-to-find-the-redirected-url-of-a-url) – soorapadman

答えて

0

あなたは、この使用してヘッダにアクセスすることができます:あなたがtrueにリダイレクトし、APIは誰もが示唆したように、あなたが場所ヘッダーを検査することができますリダイレクトされたページがロードされます従わ設定する必要が

String redirectUrl = connection.getHeaderField("Location"); 
+0

私はヘッダーのURLを取得しますが、それは同じです。私は実際に2つのHTTP応答を取得し、1つは301であり、もう1つは302です。ヘッダーを取得する方法は変わりますか? –

+0

@ThalesFloresあなたはそれが同じURLだと確信していますか?あるいは、 'http'ではなく' https'で始まるでしょうか? – RealSkeptic

+0

私がアクセスしているサイトはhttpsで、httpに行くとリダイレクトされます。しかし、私のコードが実行されるとき、私はhttps URLを取得します。 –

0

リダイレクトのターゲットは応答のHTTPヘッダーにあり、「場所」ヘッダーを探します。

+0

しかし、コードでどのようにアクセスできますか? –

+0

[getHeaderField](https://docs.oracle.com/javase/8/docs/api/java/net/URLConnection.html#getHeaderField-java.lang.String-)は、指定されたヘッダーフィールドを戻します。 –

関連する問題