0

我已经通过 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和之后,表明大部分cookie都消失了。问题是什么 ?我需要设置 cookie。但我找不到花费大约 2 天的方法。sync()CookieSyncManager.getInstance().sync();checkPost 3

编辑:

在android文档中它说:

public void setCookie(字符串 url,字符串值)

为给定的 URL 设置一个 cookie。任何具有相同主机、路径和名称的现有 cookie 都将被新 cookie 替换。设置的 cookie 必须没有过期,也不能是会话 cookie,否则将被忽略。

有没有办法通过强制CookieManager设置会话cookie setCookie()?我认为问题是,可能是我试图设置session cookie

4

1 回答 1

0

我不知道我的问题有没有答案。但出于我的目的,我使用了另一种方法来解决我的问题。这是一个漫长的过程,但它确实有效。我已经放弃了保存的想法session cookieCookieManagerAndroid 开发者网站的文档无法做到这一点)。所以,我所做的是:我已将会话 cookie 转换为字符串并将它们保存在内存中。供以后使用,我只是从内存中获取字符串并将其转换回会话 cookie。

编辑:

(对于反对者)我在回答中已经说过这个过程太长了,比如4-5节课。这个项目是我在android中的第一个项目,所以代码太乱了。所有的类都充满了太多的代码。所以不可能在这里发布。我已经告诉了我使用的过程。那么为什么要投反对票呢?

我已经以自己的方式转换了会话,并以相反的方式将字符串构建为会话。

如果有什么办法我会发布答案。构建类和算法大约需要 15~20 天。所以你为什么不做一些谷歌并找到更好的方法,或者只是像我一样构建你自己的算法和过程。我已经告诉了这里的关键部分,你只需要找到一种方法将它实现到代码中。谢谢

于 2013-04-07T21:55:53.610 回答