使用httpclient禁用/忽略cookie

时间:2013-11-09 03:27:20

标签: android cookies httpclient

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

4 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:2)

在执行httpclient.setCookieStore(cookieStore);

之前设置HttpClient

答案 2 :(得分:0)

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

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

这将删除defaultHttpClient存储的所有cookie,然后您可以使用 -

手动处理(添加/删除)cookie
myHttpPost.setHeader("Cookie", myCookie);

希望它有所帮助。

答案 3 :(得分:0)

强制在执行请求之前设置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)以保持连接活动。