我正在尝试使用此代码从服务器获取数据
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政策的代码(仍有问题)
答案 0 :(得分:2)
我有类似的问题。问题是我的手机导致错误的日期,所以所有的cookie都是空的!
答案 1 :(得分:1)
经过多次尝试后,我发现BasicCookieStore没有添加任何cookie,因为所有cookie都因未知原因而过期(仅在S2上)。我必须创建自己的CookieStore实现,忽略过期日期检查。这是一个临时修复,我仍然在寻找一种更安全,更干净的解决方法。