這篇文章主要介紹了OkHttp3中默認不保持Cookie怎么辦,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
創(chuàng)新互聯(lián)公司致力于網(wǎng)站設(shè)計、成都網(wǎng)站制作,成都網(wǎng)站設(shè)計,集團網(wǎng)站建設(shè)等服務(wù)標(biāo)準化,推過標(biāo)準化降低中小企業(yè)的建站的成本,并持續(xù)提升建站的定制化服務(wù)水平進行質(zhì)量交付,讓企業(yè)網(wǎng)站從市場競爭中脫穎而出。 選擇創(chuàng)新互聯(lián)公司,就選擇了安全、穩(wěn)定、美觀的網(wǎng)站建設(shè)服務(wù)!OKhttp3中的cookies
OkHttpClient client = new OkHttpClient().newBuilder().cookieJar(new CookieJar() { private final HashMap> cookieStore = new HashMap<>(); @Override public void saveFromResponse(HttpUrl url, List cookies) { cookieStore.put(url.host(), cookies); } @Override public List loadForRequest(HttpUrl url) { List cookies = cookieStore.get(url.host()); return cookies != null ? cookies : new ArrayList (); } }).build();
主要就是實現(xiàn)CookieJar接口,在OkHttpClient構(gòu)建的時候。
OkHttp3 默認不保持 Cookie 的解決方案
OkHttp3 聲明的 OkHttpClient 默認不保存 Cookie,不發(fā)送 Cookie。在實際開發(fā)中會丟失 Session ID 造成服務(wù)器無法判斷當(dāng)前用戶的登錄狀態(tài)。查閱多方資料后給出解決辦法。
三點概念:
首次與服務(wù)器建立連接時,服務(wù)器生成 SessionID 標(biāo)記當(dāng)前連接會話。(HTTP 是無連接協(xié)議)
客戶端 request 時,將 帶有 SessionID 的 Cookie 發(fā)送至服務(wù)器,以此作為會話標(biāo)記。
在實際使用 OkHttp3 時,通常一個 Application 只使用 一個 OkHttpClient 實例進行連接。
解決方案:
構(gòu)建 CookieJar 對象,并重寫 saveFromResponse 和 loadFromRequest 方法。
使用構(gòu)建了 CookieJar 的 OkHttpClient 實例收發(fā) Http 連接。
本程序中使用了單例模式構(gòu)造 OkHttpClient 實例,Cookie 持久化代碼如下:
mOkHttpClient = new OkHttpClient.Builder() .cookieJar(new CookieJar() { private final HashMap> cookieStore = new HashMap<>(); @Override public void saveFromResponse(HttpUrl url, List cookies) { cookieStore.put(url.host(), cookies); } @Override public List loadForRequest(HttpUrl url) { List cookies = cookieStore.get(url.host()); return cookies != null ? cookies : new ArrayList (); } }).build();
感謝你能夠認真閱讀完這篇文章,希望小編分享的“OkHttp3中默認不保持Cookie怎么辦”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!