【问题标题】:setting Cookies in WebView android在 WebView android 中设置 Cookie
【发布时间】:2011-07-20 19:08:49
【问题描述】:

我正在尝试在我的WebView 上设置一些 cookie,以打开与我的应用程序具有相同会话的浏览器。

我阅读了很多答案,但它们对我不起作用。我发现的唯一解决方案是在loadUrl 中,硬编码extraHeaders 中的cookie 数据,但正如预期的那样,这只适用于这个请求,并且不维护会话。

我的代码是:

CookieSyncManager cookieSyncManager = CookieSyncManager.createInstance(mWebView.getContext());
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
cookieManager.removeSessionCookie();
cookieManager.setCookie("http://xx.xxx.example.com","mid="+MySession.GetSession().sessionId+" ; Domain=.example.com");
cookieSyncManager.sync();

String cookie = cookieManager.getCookie("http://xx.xxx.example.com");

Log.d(LOGTAG, "cookie ------>"+cookie);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.setWebViewClient(new TuWebViewClient());
mWebView.loadUrl("http://xx.xx.example.com");

getCookie() 返回正确的数据,但是当我从服务器读取 cookie 时,它​​们是空的。怎么了?请指教。 谢谢!!!

【问题讨论】:

标签: android cookies


【解决方案1】:

解决了!!!!问题出在 webView 上,我不知道发生了什么,但是如果我创建了

WebView webView = new WebView(Activity.this);

它有效。如果我使用 findViewById() 从活动中读取 webview,它就不起作用。

此外,如果您需要设置您之前从网站收到的 cookie 列表。 您所要做的就是使用for-loop 来检查并设置所有这些。它帮助我解决了这个问题

【讨论】:

  • 那么工作方式呢?你的答案我不清楚,你能解释一下吗?
  • 好吧,亚历克斯我不知道为什么,但是如果你使用 findViewById 的 webView 不起作用,如果你手动创建 webView 并添加到布局中。
  • @flipper83 我现在也面临同样的问题。你能详细解释一下你到底做了什么吗?
  • 对我来说它正在使用 findViewById() 顺便说一句谢谢:)
【解决方案2】:
CookieSyncManager cookieSyncManager = CookieSyncManager.createInstance(mWebView.getContext());
...
cookieSyncManager.sync();

是问题的原因。你应该这样做:

CookieSyncManager.createInstance(mWebView.getContext());
...
CookieSyncManager.getInstance().sync();

并且将无需手动创建 WebView...

【讨论】:

  • 这个 CookieSyncManager.createInstance(mWebView.getContext());以某种方式帮助了我。我将一些不同的上下文传递给 cookie 同步管理器。谢谢。
  • 我认为这是解决问题的正确方法。
  • 这是否可以使普通网络浏览器也可以使用cookies以供将来使用??
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-27
  • 1970-01-01
  • 2014-11-05
  • 1970-01-01
  • 1970-01-01
  • 2014-03-16
相关资源
最近更新 更多