由于app要实现登录缓存功能,但惊讶的发现不经过设置okHttp是不会自动管理header的.
官网的文档也是醉了,找了半天没看懂怎么搞.
其实实现自动管理cookie很简单很简单,在OkHttp的builder中加上个.cookiejar()就能实现自动缓存,代码如下:
OkHttpClient.Builder b = new OkHttpClient.Builder();
b.cookieJar(new CookieJar() {
//这里一定一定一定是HashMap<String, List<Cookie>>,是String,不是url.
private final HashMap<String, List<Cookie>> cookieStore = new HashMap<>();
@Override
public void saveFromResponse(HttpUrl url, List<Cookie> cookies) {
cookieStore.put(url.host(), cookies);
}
@Override
public List<Cookie> loadForRequest(HttpUrl url) {
List<Cookie> cookies = cookieStore.get(url.host());
return cookies != null ? cookies : new ArrayList<Cookie>();
}
});
!!!!!注意注意注意!!!!!!
HashMap的key是String!!!!直接传进去url,是没有效果的!!!!!