关于okhttp Cookie持久化
2018-11-19 本文已影响33人
请你吃鱼
关于okhttp的cookie本地持久化网上已经有很多相关的资料,主要就是重写CookieJar的两个方法,将cookie保存到本地,请求时读取出来,这里需要注意的时要注意下cookie的过期时间,
@Override
public List<Cookie> loadForRequest(HttpUrl url) {
List<Cookie> list = map.get(url.host());
List<Cookie> 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保存。