【问题标题】:Cookies & Webview - CookieSyncManager in Android!Cookies & Webview - Android 中的 CookieSyncManager!
【发布时间】:2011-08-09 09:54:24
【问题描述】:

我有一个活动可让您登录页面。在下一个活动中,如果登录成功,它应该显示一个基于 cookie 的网页。 cookie 被检索,我尝试使用以下代码将其放在 webView 上:

    Cookie sessionCookie = LoginWebView.cookie;
    CookieSyncManager.createInstance(webview.this);
    CookieManager cookieManager = CookieManager.getInstance();
    if (sessionCookie != null) {
                        cookieManager.removeSessionCookie();
        String cookieString = sessionCookie.getName() + "=" + sessionCookie.getValue() + "; domain=" + sessionCookie.getDomain();
        Log.v(TAG, "COOKIE SYNC: " + cookieString);
        cookieManager.setCookie(domain, cookieString);
        CookieSyncManager.getInstance().sync();

    }

    webView.setWebViewClient(new MyWebViewClient ());
    webView.loadUrl("http://a_page.com/getpageiphone.aspx?p=home");

这是基于 StackOverflow 上其他问题的代码,但是当我加载网页时,它似乎不起作用。我的代码似乎有一些非常错误的地方,但我看不到哪里,我开始认为我做错了什么。

【问题讨论】:

  • 我认为您可能需要在 cookie 字符串中设置 cookie 路径。追加 "; Path="+sessionCookie.getPath();

标签: android http cookies login webview


【解决方案1】:

你用过这条线——

 if (sessionCookie != null) {
                          cookieManager.removeSessionCookie();

  }

。 确保您每次都能收到新的 cookie。

看来你遇到了和我一样的问题,请查看下面的链接 -

removeSessionCookie() issue of android (code.google.com)

它说removeSessionCookie() 是在一个线程中实现的,所以无论何时调用它;一个线程启动,在你的setCookie(url, cookieString); 被调用后,它会删除你刚刚设置的新cookie。 因此,对于某些设备,它运行良好,因为 removeSessionCookie() 已经执行,而对于某些设备,它删除了 cookie,我们遇到了这个问题。

通过使用SystemClock.sleep(500);,你只是让系统先完成removeSessionCookie()

我建议你删除这个removeSessionCookie();,因为你只设置了一个cookie,所以它不会与其他cookie冲突。您的代码将无缝运行。

【讨论】:

  • 我也有类似的问题;似乎 removeSessionCookie 并行运行以删除新添加的 cookie。感谢您的回复。
  • 很高兴我在这个问题上投入的时间帮助了你。
【解决方案2】:

首先,请务必阅读您的网站为您提供的标题值。您可以通过Wireshark 确定这一点。

其次,当您知道 cookie 的外观时(根据您的 Wireshark 值),您应该尝试在代码中实现相同的值。确保调试 cookie 的值,如果不匹配则对 cookie 本身进行调整。

【讨论】:

    猜你喜欢
    • 2013-06-07
    • 1970-01-01
    • 1970-01-01
    • 2011-08-14
    • 1970-01-01
    • 2016-08-30
    • 1970-01-01
    • 2018-05-02
    • 1970-01-01
    相关资源
    最近更新 更多