OkHttp3中默認不保持Cookie的解決方法
OKhttp3中的cookies
OkHttpClient client = new OkHttpClient().newBuilder().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()); return cookies != null ? cookies : new ArrayList<Cookie>(); } }).build();
主要就是實現(xiàn)CookieJar接口,在OkHttpClient構建的時候。
OkHttp3 默認不保持 Cookie 的解決方案
OkHttp3 聲明的 OkHttpClient 默認不保存 Cookie,不發(fā)送 Cookie。在實際開發(fā)中會丟失 Session ID 造成服務器無法判斷當前用戶的登錄狀態(tài)。查閱多方資料后給出解決辦法。
三點概念:
首次與服務器建立連接時,服務器生成 SessionID 標記當前連接會話。(HTTP 是無連接協(xié)議)
客戶端 request 時,將 帶有 SessionID 的 Cookie 發(fā)送至服務器,以此作為會話標記。
在實際使用 OkHttp3 時,通常一個 Application 只使用 一個 OkHttpClient 實例進行連接。
解決方案:
構建 CookieJar 對象,并重寫 saveFromResponse 和 loadFromRequest 方法。
使用構建了 CookieJar 的 OkHttpClient 實例收發(fā) Http 連接。
本程序中使用了單例模式構造 OkHttpClient 實例,Cookie 持久化代碼如下:
mOkHttpClient = new OkHttpClient.Builder() .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()); return cookies != null ? cookies : new ArrayList<Cookie>(); } }).build();
總結
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關文章
Android形狀圖形與狀態(tài)列表圖形及九宮格圖片超詳細講解
這篇文章主要介紹了Android形狀圖形與狀態(tài)列表圖形及九宮格圖片的應用方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧2022-09-09Android RippleDrawable 水波紋/漣漪效果的實現(xiàn)
這篇文章主要介紹了Android RippleDrawable 水波紋/漣漪效果的實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-08-08Android應用開發(fā)中模擬按下HOME鍵的效果(實現(xiàn)代碼)
Android應用開發(fā)中, 有一種場景,就是我們不希望用戶直接按Back鍵退出Activity,而是希望應用隱藏到后臺,類似于按Home鍵的效果2013-05-05Android 網(wǎng)絡圖片查看顯示的實現(xiàn)方法
本篇文章小編為大家介紹,Android 網(wǎng)絡圖片查看顯示的實現(xiàn)方法,需要的朋友參考下2013-04-04Android Studio無法改變Button背景顏色解決辦法
今天我來和大家探討一個在Android開發(fā)中常見但可能讓初學者感到困惑的問題,如何在Android Studio中改變Button的背景顏色,這個問題看似簡單,但實際操作中可能會遇到一些意想不到的挑戰(zhàn),接下來,我將從多個角度為大家提供解決方案,需要的朋友可以參考下2024-05-05