1.webview cookie保存在本地

项目中使用 WebView 其实会自动将 Cookie 保存在本地数据库中。保存是路径为 data/data/package_name/app_WebView/Cookies 虽然不是 .db 结尾的,实际就是一个 .db 文件,如果不设置有效期,除非websid,sid更换,不会失效

2.webview中的cookie不会随着页面关闭而清除

会话cookie在WebView关闭时不会过期,您必须自己管理它.

开启cookie

if (android.os.Build.VERSION.SDK_INT >= 21) {

CookieManager.getInstance().setAcceptThirdPartyCookies(webView, true);

} else {

CookieManager.getInstance().setAcceptCookie(true);

}

1.设置cookie:

参数中的 URL 在使用过程中基本是域名。例如 https://www.baidu.com/ 就可以使 www.baidu.com Cookie 列表的获取根据自己项目的存储方式不同而不同。例如使用 SharedPreferences 和 HashMap 注意使用 for 循环 进行 setCookie(String url, String value) 调用。网上有博客表示使用分号手动拼接的 value 值会导致 Cookie 不能完整设置或者无效 注意 value 的值是使用 key=value 的完整形式。文档提示 the cookie as a string, using the format of the ‘Set-Cookie’ HTTP response header CookieSyncManager 是个过时的类,Api21 中 WebView 可以自动同步。 CookieSyncManager.getInstance().sync(); 方法的替代方法是 cookieManager.flush(); Cookie 同步方法要在 WebView 的 setting 设置完之后调用,否则无效。 调用 loadUrl(url); 前一句调用此方法进行 Cookie 同步操作。 CookieManager cookieManager = CookieManager.getInstance(); cookieManager.setCookie(murl, “username=” + nickName + “;”);//cookies是在HttpClient中获得的cookie cookieManager.setCookie(murl, “websid=” + currentUser.getSid() + “;”);//cookies是在HttpClient中获得的cookie cookieManager.setCookie(murl, “sid=” + currentUser.getSid() + “;”);//cookies是在HttpClient中获得的cookie cookieManager.setCookie(murl, “userid=” + currentUser.getId() + “;”);//cookies是在HttpClient中获得的cookie cookieManager.setCookie(murl, “t3kwid=” + currentUser.getId() + “;”);//cookies是在HttpClient中获得的cookie cookieManager.setCookie(murl, “uph=” + “;”);//cookies是在HttpClient中获得的cookie CookieSyncManager.getInstance().sync();

2.同步cookie:

public void onPageFinished(WebView view, String url) {

CookieManager cookieManager = CookieManager.getInstance();

String cookieStr = cookieManager.getCookie(url);

String[] split = cookieStr.split(";");

}

3.清除cookie

CookieManager cookieManagerStore = CookieManager.getInstance();

cookieManagerStore.removeAllCookie();

参考阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: