用Okhttp框架登錄之後的Cookie設置到webView中

1.webview中設置:

 @SuppressWarnings("deprecation")
public void synCookies(Context context, String url) {  
       CookieSyncManager.createInstance(context);  
       CookieManager cookieManager = CookieManager.getInstance();  
       cookieManager.setAcceptCookie(true);  
//      cookieManager.removeSessionCookie();// 移除  
         
       cookieManager.removeAllCookie();  
    //   String[] cookie = mCookieStr.split(";");  
       
  //     Cookie[] cookie  = CookieUtil.getCookies().toArray(
// new Cookie[CookieUtil.getCookies().size()]);
     
       List<Cookie>   cookies=SimpleCookieJar.getCookies();
       
       
       
       StringBuffer sb = new StringBuffer();
       
       
       for ( Cookie cookie : cookies)
       {
         
String cookieName = cookie.name();
String cookieValue = cookie.value();
if (!TextUtils.isEmpty(cookieName)
&& !TextUtils.isEmpty(cookieValue)) {
sb.append(cookieName + "=");
sb.append(cookieValue + ";");
}
       }
       

String[] cookie = sb.toString().split(";"); 
       for (int i = 0; i < cookie.length; i++) {  
         Log.d("cookie[i]",cookie[i]);
           cookieManager.setCookie(url, cookie[i]);// cookies是在HttpClient中獲得的cookie  
       }  
 
 
       CookieSyncManager.getInstance().sync();  
   } 


2.SimpleCookieJar 這個類中設置:

import java.util.ArrayList;
import java.util.List;
import okhttp3.Cookie;
import okhttp3.CookieJar;
import okhttp3.HttpUrl;
public final class SimpleCookieJar implements CookieJar
{
    private final List<Cookie> allCookies = new ArrayList<Cookie>();


    
private static List<Cookie> cookies;

public static List<Cookie> getCookies() {
return cookies != null ? cookies : new ArrayList<Cookie>();
}

public static void setCookies(List<Cookie> cookies) {
SimpleCookieJar.cookies = cookies;
}

    public synchronized void saveFromResponse(HttpUrl url, List<Cookie> cookies)
    {
        allCookies.addAll(cookies);
        
        setCookies(cookies);
    }


    @Override
    public synchronized List<okhttp3.Cookie> loadForRequest(HttpUrl url)
    {
        List<Cookie> result = new ArrayList<Cookie>();
        for (Cookie cookie : allCookies)
        {
            if (cookie.matches(url))
            {
                result.add(cookie);
            }
        }
        return result;
    }
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章