在我的服务中,我运行这段代码:
public class MainService extends Service {
....
....
CookieManager mCookieManager = CookieManager.getInstance();
CookieSyncManager mCookieSyncManager = CookieSyncManager.createInstance(mContext);
if (mCookieSyncManager != null) {
mCookieSyncManager.sync();
}
AsyncHttpClient myClient = new AsyncHttpClient();
PersistentCookieStore myCookieStore = new PersistentCookieStore(mContext);
myClient.setCookieStore(myCookieStore);
myClient.setUserAgent("my service");
myClient.get("http://example.com/mypage/", new AsyncHttpResponseHandler() {
...
}
...
...
}
当我检查我的网络服务器日志时,我可以看到请求 header 中存在 cookie。
但这些 cookies 是旧 cookies 。
我还从 Activity 运行此 AndroidAsyncHttp 代码。发送相同的旧 cookie。
但是当我在 WebView 中打印出当前 cookie 时,我看到了新的 cookie。
如何使用 AndroidAsyncHttp 发送 WebView 的 cookie?
最佳答案
设置cookie前清除cookie
myCookieStore.clear();
根据我的经验,我不需要那个 CookieManager。 我只用这个。
AsyncHttpClient myClient = new AsyncHttpClient();
PersistentCookieStore myCookieStore = new PersistentCookieStore(mContext);
// clear cookie to make the fresh cookie, to ensure the newest cookie is being send
myCookieStore.clear();
// set the new cookie
myClient.setCookieStore(myCookieStore);
myClient.get("http://example.com/mypage/", new AsyncHttpResponseHandler() {
...
}
关于android - LoopJ AndroidAsyncHttp 和持久性 cookie 存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23609941/