HttpClient不在galaxy s2上存储cookie

时间:2012-07-04 14:40:35

标签: android cookies httpclient galaxy

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

    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政策的代码(仍有问题)

2 个答案:

答案 0 :(得分:2)

我有类似的问题。问题是我的手机导致错误的日期,所以所有的cookie都是空的!

答案 1 :(得分:1)

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