如何在Java中使用HttpURLConnection获取Cookie?

时间:2017-12-19 06:28:51

标签: java cookies httpurlconnection

当我使用HttpURLConnection并尝试con.getHeaderField("Set-Cookie")时,我得到了这样的回复:

__cfduid=1111111aaaaaa; expires=Wed, 19-Dec-18 06:19:46 GMT; path=/; domain=.site.com; HttpOnly

但在浏览器中Cookie是:

__cfduid=1111111aaaaaa; _ym_uid=000000000; PHPSESSID=zzzzzzzz; _ym_isad=1; key=555

如何获得这个完整的Cookie,usgin HttpURLConnection?对我来说最重要的cookie是key

1 个答案:

答案 0 :(得分:0)

Set-cookie标题的值修改或在浏览器中向Cookie添加新值。浏览器从cookie中删除过期的cookie。装配工作由浏览器完成。

在java中请求web时,程序员需要在单个或多个响应中通过Set-cookie标头组装“完整”cookie。

如果您使用HttpURLConnection,则可以使用CookieManager

这是一个例子

CookieManager cookieManager = new CookieManager();
CookieHandler.setDefault(cookieManager);

URL url = new URL("https://stackoverflow.com");

URLConnection connection = url.openConnection();
connection.getContent();

List<HttpCookie> cookies = cookieManager.getCookieStore().getCookies();
for (HttpCookie cookie : cookies) {
    System.out.println(cookie.getDomain());
    System.out.println(cookie);
}

当您发送HTTP请求时,CookieManager将自动填充Cookie标头。并且,可以通过域直接从CookieManger实现该值。