解決OKHttp不能自動緩存header cookies 裏的 sessionid

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章