由於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,是沒有效果的!!!!!