HttpClient 不将 cookie 存储在 galaxy s2 上



我正在尝试使用此代码从服务器获取数据

    DefaultHttpClient httpClient = new DefaultHttpClient();
    httpClient.getParams().setParameter(CoreProtocolPNames.USER_AGENT, USER_AGENT);
    HttpRequestRetryHandler retryhandler = new DefaultHttpRequestRetryHandler(6, true);
    httpClient.setHttpRequestRetryHandler(retryhandler);
    BasicCookieStore cookieStore = new BasicCookieStore();
    httpClient.setCookieStore(cookieStore);
    if(Build.VERSION.SDK_INT>8){
        CookieManager cookieManager = new CookieManager();
        cookieManager.setCookiePolicy(CookiePolicy.ACCEPT_ALL);
        CookieHandler.setDefault(cookieManager);
    }
    HttpGet httpget = new HttpGet(URL);
        HttpResponse response = httpClient.execute(httpget);

    HttpEntity entity = response.getEntity();
...

到目前为止,除了我的客户端的三星Galaxy SII(android 4.0.3)之外,它与我尝试过的所有设备都可以正常工作。从服务器响应来看,会话 cookie 似乎未存储。我未能重现此错误,到目前为止我尝试的所有方法都没有解决它。你有什么线索吗?

编辑:删除了禁用StrictMode策略的代码组(仍然存在问题)

我也有类似的问题。问题是我的手机导致日期不正确,因此所有cookie都是空的!!

经过多次尝试,我发现BasicCookieStore没有添加任何cookie,因为所有cookie都因未知原因而过期(并且仅在S2上)。我必须创建自己的CookieStore实现,忽略到期日期检查。这是一个临时修复程序,我仍在挖掘寻找一种更安全、更干净的方法来解决这个问题。

最新更新