曲奇及;Webview-Android中的CookieSyncManager!
我有一个活动可以让你登录到一个页面。在下一个活动中,如果登录成功,则应显示基于cookie的网页。 将检索cookie,我尝试使用以下代码将其放在webView上:曲奇及;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 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)之后启动调用code>时,它将删除您刚刚设置的新cookie。
因此,对于某些设备,它可以很好地工作,因为已经执行了removeSessionCookie()
,而对于某些设备,它删除了cookie,我们就遇到了这个问题
使用SystemClock.sleep(500)代码>,您刚才让系统先完成removeSessionCookie()
我建议您删除此removeSessionCookie()代码>因为您只设置了一个cookie,所以它不会与其他cookie冲突。您的代码将无缝工作。我认为您可能需要在cookie字符串中设置cookie路径。追加“Path=“+sessionokie.getPath()”;我也有类似的问题;似乎removeSessionCookie并行运行以删除新添加的cookie。谢谢你的回复。很高兴我在这个问题上投入的时间帮助了你。