【问题标题】:How to get Cookies with HttpURLConnection in Java?如何在 Java 中使用 HttpURLConnection 获取 Cookie?
【发布时间】:2018-06-01 13:05:49
【问题描述】:

当我使用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

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

【问题讨论】:

    标签: java cookies httpurlconnection


    【解决方案1】:

    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 Header。并且,可以通过域直接从CookieManger 获得该值。

    【讨论】:

    猜你喜欢
    • 2012-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-20
    • 1970-01-01
    • 1970-01-01
    • 2012-12-04
    • 1970-01-01
    相关资源
    最近更新 更多