曲奇及;Webview-Android中的CookieSyncManager!

曲奇及;Webview-Android中的CookieSyncManager!,android,http,cookies,login,webview,Android,Http,Cookies,Login,Webview,我有一个活动可以让你登录到一个页面。在下一个活动中,如果登录成功,则应显示基于cookie的网页。 将检索cookie,我尝试使用以下代码将其放在webView上: Cookie sessionCookie = LoginWebView.cookie; CookieSyncManager.createInstance(webview.this); CookieManager cookieManager = CookieManager.getInstance();

我有一个活动可以让你登录到一个页面。在下一个活动中,如果登录成功,则应显示基于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的外观(基于Wireshark值)时,您应该尝试在代码中实现相同的值。请确保调试cookie的值,如果cookie本身不匹配,请对其进行调整。

您已使用此行-

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

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

看起来你们经历了和我一样的问题,请查看下面的链接-

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

使用
SystemClock.sleep(500),您刚才让系统先完成removeSessionCookie()


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

我认为您可能需要在cookie字符串中设置cookie路径。追加“Path=“+sessionokie.getPath()”;我也有类似的问题;似乎removeSessionCookie并行运行以删除新添加的cookie。谢谢你的回复。很高兴我在这个问题上投入的时间帮助了你。