由于app要实现登录缓存功能,但惊讶的发现不经过设置okHttp是不会自动管理header的.
官网的文档也是醉了,找了半天没看懂怎么搞.
其实实现自动管理cookie很简单很简单,在OkHttp的builder中加上个.cookiejar()就能实现自动缓存,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
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,是没有效果的!!!!!