当我使用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
。
答案 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
实现该值。