您的位置:首页 > 移动开发

安卓学习笔记---AndroidWebview里设置Cookie遇到的坑

2016-08-19 14:37 846 查看
我们一般在使用WebView去加载H5界面的时候都会同步一下Cookie,一般的都会这么做:

在HttpClient中保存下来的Cookie怎么设置到WebView组件里,让WebView也保持住Cookie状态,也就是登录状态呢? 

CookieSyncManager和CookieManager就是做这种事的,下面来看代码里怎么设置Cookie让WebView也保持登录状态: 

Java代码  



/** 

 * 同步一下cookie 

 */  

pubip
// 设置cookie
public static void syncCookie(Context context) {


    CookieSyncManager.createInstance(context);  

    CookieManager cookieManager = CookieManager.getInstance();  

    cookieManager.setAcceptCookie(true);  

    cookieManager.removeSessionCookie();//移除  

    cookieManager.setCookie(url, cookies);//cookies是在HttpClient中获得的cookie  

    CookieSyncManager.getInstance().sync();  

}  

在android里面在调用webView.loadUrl(url)之前一句调用此方法就可以给WebView设置Cookie 

注:这里一定要注意一点,在调用设置Cookie之后不能再设置

Java代码  



webView.getSettings().setBuiltInZoomControls(true);  

webView.getSettings().setJavaScriptEnabled(true);  

这类属性,否则设置Cookie无效。

我原来一直是这么设置的,因为后台说需要这两个字段:

JSESSIONID和deliveryManName


cookieManager.setCookie(cookieUrl, "JSESSIONID=" + HcyHttpClient.getCookie("JSESSIONID") +
";token=" + HcyHttpClient.getCookie("token")+";deliveryManName=" + HcyHttpClient.getCookie("deliveryManName")
);

可是我用代理查看了一下,后台只能看到一个值就是 JSESSIONID,但是看不到这个上传的token和deliveryManName

于是我就纳闷了,怎么会这样呢,感觉一直都是这样的啊,怎么尝试都是只有一个值

后台我说看看这样的方法行不行

cookieManager.setCookie(cookieUrl, "deliveryManName=" + HcyHttpClient.getCookie("deliveryManName"));
cookieManager.setCookie(cookieUrl,"JSESSIONID="+HcyHttpClient.getCookie("JSESSIONID"));
cookieManager.setCookie(cookieUrl,"token="+HcyHttpClient.getCookie("token"));

我一个一个的去设置,看行不行,测试之后,果然都有了



估计设置一个Cookie只能识别一个吧,哎,受教了,有坑有木有。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: