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

Sha*_*non 7 java cookies httpurlconnection

当我使用HttpURLConnection并尝试时,con.getHeaderField("Set-Cookie")我得到以下响应:

__cfduid=1111111aaaaaa; expires=Wed, 19-Dec-18 06:19:46 GMT; path=/; domain=.site.com; HttpOnly
Run Code Online (Sandbox Code Playgroud)

但是浏览器 cookie 是:

__cfduid=1111111aaaaaa; _ym_uid=000000000; PHPSESSID=zzzzzzzz; _ym_isad=1; key=555
Run Code Online (Sandbox Code Playgroud)

我如何获得完整的 cookie,使用HttpURLConnection? 对我来说最重要的饼干是key

neu*_*euo 7

header的值Set-cookie修改或附加新值到浏览器的Cookies中。并且浏览器从cookies中删除过期的cookie。组装工作由浏览器完成。

Set-cookie当在java中请求web时,程序员需要在单个或多个响应中按标头组装“完整”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);
}
Run Code Online (Sandbox Code Playgroud)

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