关于okhttp Cookie持久化

关于okhttp的cookie本地持久化网上已经有很多相关的资料,主要就是重写CookieJar的两个方法,将cookie保存到本地,请求时读取出来,这里需要注意的时要注意下cookie的过期时间,

                @Override
                public List loadForRequest(HttpUrl url) {
                    List list = map.get(url.host());
                    List cookies = new ArrayList<>();
                    if (list != null) {
                        for (Cookie cookie : list) {
                            if (cookie.expiresAt() < System.currentTimeMillis()) {
                                cookies.add(cookie);
                            }
                        }
                    }
                    return cookies;
                }
            })

expiresAt为过期时间,根据请求获得,如果不存在该字段则由okhttp内部实现,为当前时间加上max-age所得。
如果存在多个cookie则需要注意不可以直接覆盖,可以考虑使用数据库或者将请求的url作为map的key保存。

你可能感兴趣的:(关于okhttp Cookie持久化)