Android Okhttp中获取Cookie并在WebView中使用的方法
现在混合开发成为主流,原生和H5交互更为广泛,所以要做大前端开发,APP和浏览器都得懂
1、从okhttp3.Response
中获取Cookies
并保存
private void saveCookies(okhttp3.Response response) {
Headers headers = response.headers();
List<String> values = headers.values("Set-Cookie");
if (values != null && values.size() > 0) {
StringBuilder sb = new StringBuilder();
for (String s : values) {
sb.append(s);
}
/**
* 将拼接结果保存到sp中,以备后面使用
* 如:JSESSIONID=799F9F81ABC8D4A012CFD3544D1BFC95; Path=/; HttpOnly
*/
SpUtil.getInstance().setStringValue(CommonHttpConsts.SET_COOKIE, sb.toString());
}
}
注意:多个结果之间采用逗号 ;
隔开
2、在WebView中使用cookie
private void setCookie(String webUrl) {
CookieManager.allowFileSchemeCookies();
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
cookieManager.removeSessionCookies(value -> Log.d(TAG, "onReceiveValue: " + value));
String cookie=SpUtil.getInstance().getStringValue(CommonHttpConsts.SET_COOKIE);
cookieManager.setCookie(webUrl,cookie);
cookieManager.flush();
}
...在加载界面之前设置cookies
mWebView.loadUrl(this.webUrl);