Okhttp cookie获取、持久化存储、设置到webview(腾讯tbs浏览器)

本文介绍了如何使用Okhttp获取cookie,并实现cookie的持久化存储,以及如何将这些cookie设置到腾讯TBS浏览器的webview中。详细讲解了CookieJar接口的使用,以及通过自定义PersistentCookieStore类来处理本地存储。
摘要由CSDN通过智能技术生成

Okhttp cookie获取、持久化存储、设置到webview(腾讯tbs浏览器)

1、Okhttp获取cookie

其实okhttp提供了cookie管理的接口CookieJar,我们只需要继承CookieJar即可
每次okhttp发起请求都会调用:加载saveFromResponse方法,将cookie放、返回给我们;每次请求返回是都会调用loadForRequest方法,我们将自己保存的cookie带入即可;

	//保存cookie
	@Override
    public void saveFromResponse(HttpUrl url, List<Cookie> cookies) {
   
        if (cookies != null && cookies.size() > 0) {
           	 
          //保存cookie操作
        }
    }
    //加载cookie
    @Override
    public List<Cookie> loadForRequest(HttpUrl url) {
       	
        List<Cookie> cookies = cookieStore.get(url);
        return cookies;
    }

2、okhttp cookie存储持久化

因为okhttp只提供cookie处理方法,不提供保存方法,所以需要自己保存
此处我们保存至手机本地内存中
此处直接贴出保存的的PersistentCookieStore类

public class PersistentCookieStore {
   
    private static final String LOG_TAG = "PersistentCookieStore";
    private static final String COOKIE_PREFS = "Cookies_Prefs";

    private final Map<String, ConcurrentMap<String, Cookie>> cookies;
    private final SharedPreferences cookiePrefs;

    public PersistentCookieStore(Context context) {
   
        cookiePrefs = context.getSharedPreferences(COOKIE_PREFS, 0);
        ConcurrentMap<String, Cookie> cmp=new ConcurrentHashMap<String, Cookie>();
        cookies = new HashMap<String, ConcurrentMap<String, Cookie>>();

        //将持久化的cookies缓存到内存中 即map cookies
        Map<String, ?> prefsMap = cookiePrefs.getAll();
        for (Map.Entry<String, ?> entry : prefsMap.entrySet()) {
   
            String[] cookieNames = TextUtils.split((String) entry.getValue(), ",");
            for (String name : cookieNames) {
   
                String encodedCookie = cookiePrefs.getString(name, null);
                if (encodedCookie != null) {
   
                    Cookie decodedCookie = decodeCookie(encodedCookie);
                    if (decodedCookie !
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值