如何从 Apache HttpClient 4.x 获取 cookie?

Posted

技术标签:

【中文标题】如何从 Apache HttpClient 4.x 获取 cookie?【英文标题】:How do I get the cookies from Apache HttpClient 4.x? 【发布时间】:2014-03-05 17:51:09 【问题描述】:

如何从 HttpClient 类型的现有对象中获取 cookie? 我正在使用 HttpClient 版本 4.3.3,它没有方法 httpClient.getCookieStore() 了。

【问题讨论】:

【参考方案1】:
CloseableHttpClient httpclient = HttpClients.createDefault();
HttpClientContext context = HttpClientContext.create();
CloseableHttpResponse response = httpclient.execute(new HttpGet("/"), context);
try 
    CookieStore cookieStore = context.getCookieStore();
    List<Cookie> cookies = cookieStore.getCookies();
 finally 
    response.close();

【讨论】:

我希望无需像版本 3 那样创建自己的 HttpClientContext 就可以获取 HttpClient 的 CookieStore。 @eztam:为什么? HttpClient 总是需要一个执行上下文,因此如果没有明确给出,则会在后台创建一个。 @ok2c 因为它在某些完全正常的情况下会导致@#$@#$@#$ 背部疼痛 @YannickMenager 究竟是什么情况下所说的背部疼痛?执行上下文?【参考方案2】:

版本 4.5.2 您可以使用此代码:

List<Cookie> cookies = ((CookieStore)localContext.getAttribute(HttpClientContext.COOKIE_STORE)).getCookies();

【讨论】:

以上是关于如何从 Apache HttpClient 4.x 获取 cookie?的主要内容,如果未能解决你的问题,请参考以下文章

在 Apache HttpClient 4.x 中多次读取响应正文

使用Apache HttpClient 4.x进行异常重试

Android API 23 - HttpClient 4.X 重新打包

如何从 Apache HttpClient5 的 HttpResponse 中获取响应体?

如何使用 Apache HttpClient 4.3 处理 Cookie

使用当前 httpclient (4.x) 的 RestTemplate 基本或摘要身份验证