HttpUrlConnection:Cookie 显示在 CookieStore 中,但不显示在 POST Header 中

HttpUrlConnection: Cookies Show in CookieStore but not in the POST Header

在下面的代码中,我是 运行 网站上的 post 请求。我不明白的是为什么 cookie 通过 cookiemanager 显示,但它没有显示在 POST header 中。请参阅我在代码中的注释。

有人可以解释一下我缺少什么吗?

CookieManager cm = new CookieManager(null, CookiePolicy.ACCEPT_ALL);
CookieHandler.setDefault(cm);

...

connection = (HttpURLConnection) url.openConnection();

connection.setRequestMethod("POST");

OutputStream outputStream = connection.getOutputStream();
outputStream.write(urlParams.getBytes(charset));

// Clear cookies to prove they are not from an old request.
cm.getCookieStore().removeAll();

if (connection.getResponseCode() != HttpURLConnection.HTTP_OK)
            throw new Exception("Invalid response code.");

// No cookie prints here:   
Log.d("Aero", connection.getHeaderFields().toString());

List<HttpCookie> cookies = cm.getCookieStore().getCookies();

for (HttpCookie cookie : cookies) {
         if (cookie.getName().equals("ASP.NET_SessionId")) {
             // But we do get a cookie here
             Log.d("Aero", cookie.toString());             
          }
     }   

好的,今天早上头脑清醒,我自己设法解决了这个问题。问题是响应是 302 重定向,重定向的页面在响应中没有 cookie header。

我需要使用:

connection.setInstanceFollowRedirects(false);

确保我阅读的是原始 header 而非重定向的回复。