我已通过WebView登录网站。然后我得到了在登录时由webview设置的cookie。然后我试着稍后设置cookie。请看我的代码:
CookieSyncManager.createInstance(context);
CookieManager cookieManager = CookieManager.getInstance();
Log.e("checkPost 1", cookie);
cookieManager.setCookie("https://************", cookie);
Log.e("checkPost 2", cookieManager.getCookie("https://*************"));
CookieSyncManager.getInstance().sync();
Log.e("checkPost 3", cookieManager.getCookie("https://*************"));
在checkPost 1
打印的cookie中的表明它没问题。但在checkPost 2
和sync()
CookieSyncManager.getInstance().sync();
语句后,checkPost 3
表示大部分Cookie已消失。问题是什么 ?我需要设置cookie。但我找不到花费大约2天的方法。
修改
在android文档中它说:
public void setCookie(String url,String value)
为给定的网址设置Cookie。任何现有的cookie都具有相同的 主机,路径和名称将替换为新的cookie。饼干 设置必须不会过期,不能是会话cookie, 否则会被忽略。
有没有办法强制CookieManager
通过setCookie()
设置会话Cookie?
我认为问题是,我可能正在尝试设置session cookie
答案 0 :(得分:-1)
我不知道我的问题是否有任何答案。但为了我的目的,我用另一种方法来解决我的问题。这是一个漫长的过程,但它确实有效。我放弃了将session cookie
保存在CookieManager
中的想法(Android Developer网站的文档无法做到这一点)。所以,我所做的是:我已经在字符串中转换了会话cookie并将它们保存在内存中。以后使用我只需从内存中取出字符串并将其转换回会话cookie。
修改强>
(对于负面选民)我在答案中说过这个过程太长了,比如4-5班。这个项目是我在android中的第一个项目,所以代码太乱了。所有的课程都充满了太多的代码。所以不可能在这里发布。我告诉过我用过的过程。为什么反对投票?
我已经以自己的方式转换了会话,并以相反的方式将字符串构建到会话。
如果有任何方式我会发布答案。构建类和算法需要大约15~20天。那你为什么不做一些谷歌并找到更好的方法,或者只是像我一样建立自己的算法和流程。我已经告诉了这里的关键部分,你只需要找到一种方法将其实现到代码中。感谢