if (singleton == null) {
synchronized (HttpUtil.class) {
if (singleton == null) {
singleton = new OkHttpClient.Builder()
.connectTimeout(10, TimeUnit.SECONDS)
.readTimeout(20, TimeUnit.SECONDS)
.addInterceptor(new LoggingInterceptor())
.cookieJar(new CookieJar() {
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());
System.out.println("Cookies======="+cookies);
return cookies != null ? cookies : new ArrayList<Cookie>();
}
}).build();
}
}
}
debug時代碼運行到 cookieStore.get(url.host())的時候有值,代碼運行到cookieStore.put(url.host(), cookies);的時候cookie值就丟失了,求教怎么處理?
uj5u.com熱心網友回復:
先確認一下服務器回傳的response是否包含cookieuj5u.com熱心網友回復:
這段代碼的作用是不是運行到cookieStore.put(url.host(), cookies);的時候把服務端回傳的cookie值保存到本地,然后到loadForRequest(HttpUrl url) 的時候把保存的cookie值用來請求,cookieStore.put(url.host(), cookies);沒有值是不是后端根本就沒有回傳cookie值,所以cookie丟了?
uj5u.com熱心網友回復:
有這個可能,所以要你確認一下轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/129109.html
標籤:Android
