从重定向 URL 获取 cookie

Kun*_*tre 5 java httpclient

我有一个 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)

此代码给我最终响应而不是中间重定向响应。
那么有人可以建议我什么是更好的方法吗?

我检查过的其他事情是:-

  1. 我禁用了重定向,此响应为我提供了此过程的第一个 url。
  2. 我已经使用 Jsoup 禁用了重定向,它给出了与上面相同的输出。

虽然在 ruby​​ 中可以获取此类重定向的 cookie,但我已经这样做了。
但我必须用java来做这个。http客户端 4.5

kma*_*dov 3

如果您想更好地控制重定向行为,您可以更改http 客户端的RedirectStrategy 。

您可以创建自己的 RedirectStrategy 并使用它:

HttpClient instance = HttpClientBuilder.create()
                     .setRedirectStrategy(new LaxRedirectStrategy()).build();
Run Code Online (Sandbox Code Playgroud)