【问题标题】:getting trouble to set cookie android.webkit.CookieManager无法设置 cookie android.webkit.CookieManager
【发布时间】:2014-03-22 01:58:38
【问题描述】:

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

编辑:

在 android 文档中它说:

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

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

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

【问题讨论】:

标签: android cookiemanager


【解决方案1】:

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

编辑:

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

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

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

【讨论】:

  • -1 表示没有代码实际显示这一点。您如何“将其转换回会话 cookie”?你在设置 HTTP 标头吗?
猜你喜欢
  • 2018-11-28
  • 1970-01-01
  • 2014-11-05
  • 2016-08-03
  • 2021-05-28
  • 2021-03-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多