在请求中跳过发送cookie,但保留cookie

时间:2013-12-16 08:05:48

标签: android cookies request httpclient

是否有一种简单的方法可以确保HttpClient在请求期间不发送cookie,而不删除所有cookie。

通过做:

httpClient.getCookieStore().clear();

不发送cookie,这很好。 但对于其他请求(我需要这些cookie),我不想再次获取新的cookie。

2 个答案:

答案 0 :(得分:0)

您可以尝试为该特定请求手动设置请求的Cookie标头

request.setHeader("Cookie","");

编辑: 因此,如果不工作,其他方法可能是尝试将空cookie存储添加到该HttpClient实例,所以理论上你将有一个空的cookiestore

// Create a local instance of cookie store
CookieStore cookieStore = new BasicCookieStore();
// Add the created cookieStore to the http client instance
httpClient.setCookieStore(cookieStore);

答案 1 :(得分:0)

我的回答是基于您使用Apache HttpClient版本4.x的假设。

默认情况下,HttpClient 4.x向负责HTTP状态管理的协议处理管道引入了两个协议拦截器:RequestAddCookiesResponseProcessCookies。您希望在保留RequestAddCookies的同时删除ResponseProcessCookies

这是用HttpClient 4.3

完成的
CloseableHttpClient httpclient = HttpClients.custom()
        .disableCookieManagement()
        .addInterceptorFirst(new ResponseProcessCookies())
        .build();

还有其他方法可以实现相同的结果,例如使用自定义协议拦截器从所有传出请求中删除Cookie标头,但删除RequestAddCookies是最有效的。