HttpUrlConnection:Cookies在CookieStore中显示,但不在POST标题中显示

时间:2015-04-23 07:52:39

标签: java android cookies httpurlconnection

在下面的代码中,我在网站上运行发布请求。我不明白为什么cookie通过cookiemanager显示,但它没有出现在POST标题中。请参阅我在代码中的评论。

有人可以解释我错过的内容吗?

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());             
          }
     }   

1 个答案:

答案 0 :(得分:1)

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

我需要使用:

connection.setInstanceFollowRedirects(false);

确保我正在读取原始标题的响应,而不是重定向的标题。