Android 跳过发送请求中的Cookie,但维护Cookie
有没有一种简单的方法可以确保HttpClient在请求期间不发送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.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。