WebView根本不接受cookie

时间:2014-01-14 12:10:34

标签: android webview

 CookieSyncManager.createInstance(getApplicationContext());
 CookieManager.getInstance().setAcceptCookie(true);
 webView = (WebView)findViewById(R.id.webView1);
 CookieSyncManager.getInstance().sync();

还尝试使用JUST:

CookieManager.getInstance().setAcceptCookie(true);

在每个可以想象的地方,我仍然无法接受饼干?怎么回事?

1 个答案:

答案 0 :(得分:2)

我遇到了同样的问题。尝试了stackoverflow上所有答案的几种组合,但WebView只是忽略了cookie。

最终为我工作的解决方案是使用CookieManager手动设置cookie。

最初,我使用不正确的URL调用CookieManager上的setCookie(),而我的WebView仍然忽略了cookie。你需要找到正确的url,这很可能是你将调用webView.loadUrl(url)的url域。如果您的webview执行多次重定向,则可能需要尝试使用不同的域来查找正确的域以设置Cookie。我必须将其设置为出现在其中一个重定向中的域,而不是我称之为webView.loadUrl(url)的url域。

final CookieSyncManager cookieSyncManager = CookieSyncManager.createInstance(context);
final CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
cookieManager.removeSessionCookie();

//Set the cookies one by one. You might extract these cookies from the headers like I did. 
//They were saved under the key "Set-Cookie". Or you might extract them from the http
//client like so httpclient.getCookieStore().getCookies() depending on your implementation. 
// Assuming you have List<String> cookies to work with:
for (String cookie : cookies)
{                 
   cookieManager.setCookie("http://exampledomain.com", cookie.split(";")[0]);
}
cookieSyncManager.sync();
webView.loadUrl(url);