用Okhttp框架登录之后的Cookie设置到webView中(转)

Posted 一起学习_Program

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用Okhttp框架登录之后的Cookie设置到webView中(转)相关的知识,希望对你有一定的参考价值。

 

用Okhttp框架登录之后的Cookie设置到webView中(正文)

1.webview中设置:

[java] view plain copy
  1.  @SuppressWarnings("deprecation")  
  2. public void synCookies(Context context, String url) {    
  3.        CookieSyncManager.createInstance(context);    
  4.        CookieManager cookieManager = CookieManager.getInstance();    
  5.        cookieManager.setAcceptCookie(true);    
  6. //      cookieManager.removeSessionCookie();// 移除    
  7.            
  8.        cookieManager.removeAllCookie();    
  9.     //   String[] cookie = mCookieStr.split(";");    
  10.          
  11.   //     Cookie[] cookie  = CookieUtil.getCookies().toArray(  
  12. // new Cookie[CookieUtil.getCookies().size()]);  
  13.        
  14.        List<Cookie>   cookies=SimpleCookieJar.getCookies();  
  15.          
  16.          
  17.          
  18.        StringBuffer sb = new StringBuffer();  
  19.          
  20.          
  21.        for ( Cookie cookie : cookies)  
  22.        {  
  23.            
  24. String cookieName = cookie.name();  
  25. String cookieValue = cookie.value();  
  26. if (!TextUtils.isEmpty(cookieName)  
  27. && !TextUtils.isEmpty(cookieValue)) {  
  28. sb.append(cookieName + "=");  
  29. sb.append(cookieValue + ";");  
  30. }  
  31.        }  
  32.          
  33.   
  34. String[] cookie = sb.toString().split(";");   
  35.        for (int i = 0; i < cookie.length; i++) {    
  36.          Log.d("cookie[i]",cookie[i]);  
  37.            cookieManager.setCookie(url, cookie[i]);// cookies是在HttpClient中获得的cookie    
  38.        }    
  39.    
  40.    
  41.        CookieSyncManager.getInstance().sync();    
  42.    }   


2.SimpleCookieJar 这个类中设置:

[java] view plain copy
  1. import java.util.ArrayList;  
  2. import java.util.List;  
  3. import okhttp3.Cookie;  
  4. import okhttp3.CookieJar;  
  5. import okhttp3.HttpUrl;  
  6. public final class SimpleCookieJar implements CookieJar  
  7. {  
  8.     private final List<Cookie> allCookies = new ArrayList<Cookie>();  
  9.   
  10.   
  11.       
  12. private static List<Cookie> cookies;  
  13.   
  14. public static List<Cookie> getCookies() {  
  15. return cookies != null ? cookies : new ArrayList<Cookie>();  
  16. }  
  17.   
  18. public static void setCookies(List<Cookie> cookies) {  
  19. SimpleCookieJar.cookies = cookies;  
  20. }  
  21.   
  22.     public synchronized void saveFromResponse(HttpUrl url, List<Cookie> cookies)  
  23.     {  
  24.         allCookies.addAll(cookies);  
  25.           
  26.         setCookies(cookies);  
  27.     }  
  28.   
  29.   
  30.     @Override  
  31.     public synchronized List<okhttp3.Cookie> loadForRequest(HttpUrl url)  
  32.     {  
  33.         List<Cookie> result = new ArrayList<Cookie>();  
  34.         for (Cookie cookie : allCookies)  
  35.         {  
  36.             if (cookie.matches(url))  
  37.             {  
  38.                 result.add(cookie);  
  39.             }  
  40.         }  
  41.         return result;  
  42.     }  
  43. }  




以上是关于用Okhttp框架登录之后的Cookie设置到webView中(转)的主要内容,如果未能解决你的问题,请参考以下文章

用okhttp3 来写接口测试脚本,cookie 怎么弄

关于Android的okHttp+webview的cookie跨域问题

Android编程入门--开源框架OKHttp

android okhttp3带cookie请求

在 Android 上使用 okhttp 2 的持久 Cookie 存储

Retrofit--使用Retrofit时怎样去设置OKHttp