我有一个 url,它进行 2 个内部重定向,然后最终返回 ok 响应。
第一个 URL: : http://www.someurl.com/
重定向 URL 1: : http://www.someurl_1.com/响应 302
重定向 URL 2: : http://www.someurl_2.com/响应 302
最终 URL: : http://www.finalurl.com/响应 200
内部重定向 URL 1发送一些 cookie 到重定向 URL 2。我要做的就是获取为重定向 URL 2:设置的 cookie 。
这是我的java代码。
HttpClient client = HttpClientBuilder.create().build();
HttpGet get = new HttpGet(myurl);
get.setHeader("User-Agent", "Mozilla");
get.setHeader("Accept"," text/html,application/xhtml+xml,application/xml;");
get.setHeader("Accept-Language", "en-US,en;q=0.8");
get.setHeader("Accept-Encoding"," gzip, deflate");
get.setHeader("Connection","keep-alive");
get.setHeader("Cookie",JSESSIONID+");
// get.setHeader("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
Header[] requestheaders = get.getAllHeaders();
System.out.println("requestheaders >>> ");
for(Header header: requestheaders){
System.out.println(header.getName()+"-------------------- "+header.getValue());
}
HttpResponse response = client.execute(get);
System.out.println("response 7 "+response);
System.out.println("Headers are");
Header[] headers = response.getAllHeaders();
for (int i = 0; i < headers.length; i++) {
System.out.println((headers[i].getName()+"___________________"+headers[i].getValue()));
}
Run Code Online (Sandbox Code Playgroud)
此代码给我最终响应而不是中间重定向响应。
那么有人可以建议我什么是更好的方法吗?
我检查过的其他事情是:-
虽然在 ruby 中可以获取此类重定向的 cookie,但我已经这样做了。
但我必须用java来做这个。http客户端 4.5
如果您想更好地控制重定向行为,您可以更改http 客户端的RedirectStrategy 。
您可以创建自己的 RedirectStrategy 并使用它:
HttpClient instance = HttpClientBuilder.create()
.setRedirectStrategy(new LaxRedirectStrategy()).build();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5585 次 |
| 最近记录: |