Android 跳过发送请求中的Cookie,但维护Cookie

Android 跳过发送请求中的Cookie,但维护Cookie,android,cookies,request,httpclient,Android,Cookies,Request,Httpclient,有没有一种简单的方法可以确保HttpClient在请求期间不发送cookie,而不删除所有cookie 通过这样做: httpClient.getCookieStore().clear(); 没有发送cookies,这很好。 但是对于其他请求(我需要这些Cookie的地方),我不想再次获取新Cookie。您可以尝试为该特定请求手动设置请求的Cookie头 request.setHeader("Cookie",""); 编辑: 因此,如果这不起作用,另一种方法可能是尝试向HttpClient实

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

通过这样做:

httpClient.getCookieStore().clear();
没有发送cookies,这很好。
但是对于其他请求(我需要这些Cookie的地方),我不想再次获取新Cookie。

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

request.setHeader("Cookie","");
编辑: 因此,如果这不起作用,另一种方法可能是尝试向HttpClient实例添加一个空的cookie存储,因此理论上,您将拥有一个空的cookiestore

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

我的回答基于这样一个假设,即您使用的是ApacheHttpClient版本4.x

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

这就是使用HttpClient 4.3实现的方法

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

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

我不知道安卓系统,但你有本地存储选项吗?或内部数据库以“备份”cookie。另一个解决方案是使cookie仅对某个路径有效(并在另一个路径中发出不带cookie的请求)。您好,建议不错,但不幸的是,不适用于我的问题。手动更新和处理数据库中的cookies是不应该考虑的事情。我认为没有其他方法。因为这是饼干的概念。您还可以为无cookie请求设置另一个域。这是一个非常大的系统(facebook、google等)中的静态图像的诀窍,但没有任何运气。看起来httpClient会自动为域添加cookie,即使我们在标头中添加了空cookie。