次のようにコードをコピーします。
org.apache.http.HttpEntity をインポートします。
org.apache.http.HttpHost をインポートします。
org.apache.http.HttpResponse をインポートします。
org.apache.http.client.HttpClientをインポートします。
org.apache.http.client.methods.HttpGet をインポートします。
org.apache.http.client.methods.HttpUriRequest をインポートします。
org.apache.http.entity.ContentType をインポートします。
org.apache.http.impl.client.DefaultHttpClientをインポートします。
org.apache.http.protocol.BasicHttpContext をインポートします。
org.apache.http.protocol.ExecutionContext をインポートします。
org.apache.http.protocol.HttpContext をインポートします。
org.apache.http.util.EntityUtils をインポートします。
パブリック クラス HttpClientDemo {
/**
※リダイレクト後のURL情報を取得します
* @see HttpClient はデフォルトでクライアントのリダイレクトを自動的に処理します
* @see つまり、Web ページ A にアクセスした後、Web ページ B にリダイレクトされると仮定すると、HttpClient は自動的に Web ページ B のコンテンツを返します。
* @see Web ページ B のアドレスを取得する場合は、HttpContext オブジェクトを使用する必要があります。HttpContext は、複数の要求と応答の対話でステータス情報を維持するためにクライアントによって実際に使用されます。
* @see HttpContext を使用して必要な情報を保存し、次のリクエスト時にこの情報を取り出して使用することもできます。
*/
public static void getRedirectInfo(){
HttpClient httpClient = 新しい DefaultHttpClient();
HttpContext httpContext = new BasicHttpContext();
HttpGet httpGet = new HttpGet("http://127.0.0.1:8088/blog/main.jsp");
試す {
// HttpContext オブジェクトをパラメータとしてexecute() メソッドに渡すと、HttpClient はリクエストとレスポンスの対話プロセス中のステータス情報を HttpContext に保存します。
HttpResponse 応答 = httpClient.execute(httpGet, httpContext);
//リダイレクト後のホストアドレス情報、つまり「http://127.0.0.1:8088」を取得します。
HttpHost targetHost = (HttpHost)httpContext.getAttribute(ExecutionContext.HTTP_TARGET_HOST);
//実際のリクエスト オブジェクトの URI を取得します。リダイレクト後の「/blog/admin/login.jsp」です。
HttpUriRequest realRequest = (HttpUriRequest)httpContext.getAttribute(ExecutionContext.HTTP_REQUEST);
System.out.println("ホストアドレス:" + targetHost);
System.out.println("URI情報:" + realRequest.getURI());
HttpEntity エンティティ = response.getEntity();
if(null != エンティティ){
System.out.println("応答内容:" + EntityUtils.toString(entity, ContentType.getOrDefault(entity).getCharset()));
EntityUtils.consume(エンティティ);
}
} catch (例外 e) {
e.printStackTrace();
}ついに{
httpClient.getConnectionManager().shutdown();
}
}
}