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

我们一般在使用WebView去加载H5界面的时候都会同步一下Cookie,一般的都会这么做:

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

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

Java代码   收藏代码
  1. /** 
  2.  * 同步一下cookie 
  3.  */  
  4. pubip
    // 设置cookie
    public static void syncCookie(Context context) {
  5.     CookieSyncManager.createInstance(context);  
  6.     CookieManager cookieManager = CookieManager.getInstance();  
  7.     cookieManager.setAcceptCookie(true);  
  8.     cookieManager.removeSessionCookie();//移除  
  9.     cookieManager.setCookie(url, cookies);//cookies是在HttpClient中获得的cookie  
  10.     CookieSyncManager.getInstance().sync();  
  11. }  

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

注:这里一定要注意一点,在调用设置Cookie之后不能再设置
Java代码   收藏代码
  1. webView.getSettings().setBuiltInZoomControls(true);  
  2. 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只能识别一个吧,哎,受教了,有坑有木有。 
  


你可能感兴趣的:(WebView问题)