4

如何禁用/忽略 httpclient 的默认 cookie 处理。我想手动完成。我想为所有 http 请求设置一个预定义的 cookie 标头。

4

4 回答 4

7

最新的 httpclient (4.5.1)有一个名为的方法"disableCookieManagement",看起来这只是禁用了内部 cookie 管理,而不是发送或接收 cookie 的能力,并且对我有用-

http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org/apache/http/impl/client/HttpClientBuilder.html#disableCookieManagement()

于 2016-01-11T18:21:19.207 回答
1

httpclient.setCookieStore(cookieStore);在执行之前设置HttpClient

于 2013-11-09T05:20:53.427 回答
1

在执行请求之前强制设置 HttpContext:

private HttpClientContext httpContext = new HttpClientContext();
httpContext.setCookieStore(new BasicCookieStore());

setCookieStore 将创建一个空的 cookie 存储来替换 http 连接的默认 cookie 存储。

之后我们可以执行http方法:

org.apache.http.client.HttpClient.execute(HttpUriRequest, HttpContext)

我们还可以重用 cookie 存储(保留BasicCookieStore)来保持连接活动。

于 2015-12-29T03:52:22.757 回答
0

我找不到在 Andoroid 中通过 DefaultHttpClient 禁用/忽略 cookie 处理的方法(我应该对 Android 源代码进行更多探索,但有时间限制)。但是我通过在像这样执行 httpClient.execute() 之前删除所有 cookie 来解决它 -

((AbstractHttpClient) myDefaultHttpClient).getCookieStore().clear();

这将删除 defaultHttpClient 存储的所有 cookie,然后您可以使用 - 手动处理(添加/删除)cookie -

myHttpPost.setHeader("Cookie", myCookie);

希望能帮助到你。

于 2013-11-12T19:26:48.927 回答