中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

OkHttp3中默認不保持Cookie怎么辦

發布時間:2021-06-16 15:02:00 來源:億速云 閱讀:218 作者:小新 欄目:移動開發

這篇文章主要介紹了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();

主要就是實現CookieJar接口,在OkHttpClient構建的時候。

OkHttp3 默認不保持 Cookie 的解決方案

OkHttp3 聲明的 OkHttpClient 默認不保存 Cookie,不發送 Cookie。在實際開發中會丟失 Session ID 造成服務器無法判斷當前用戶的登錄狀態。查閱多方資料后給出解決辦法。

三點概念:

首次與服務器建立連接時,服務器生成 SessionID 標記當前連接會話。(HTTP 是無連接協議)
客戶端 request 時,將 帶有 SessionID 的 Cookie 發送至服務器,以此作為會話標記。
在實際使用 OkHttp3 時,通常一個 Application 只使用 一個 OkHttpClient 實例進行連接。

解決方案:

構建 CookieJar 對象,并重寫 saveFromResponse 和 loadFromRequest 方法。

使用構建了 CookieJar 的 OkHttpClient 實例收發 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();

感謝你能夠認真閱讀完這篇文章,希望小編分享的“OkHttp3中默認不保持Cookie怎么辦”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

腾冲县| 南靖县| 霸州市| 会昌县| 锡林郭勒盟| 辽宁省| 鹤壁市| 武鸣县| 洱源县| 青神县| 凯里市| 梁平县| 汕头市| 广昌县| 沙河市| 萨嘎县| 湖南省| 河间市| 宜良县| 黄山市| 呼和浩特市| 黄大仙区| 邵阳市| 惠安县| 阳高县| 昌宁县| 和平区| 滨州市| 清镇市| 商洛市| 建湖县| 竹山县| 班戈县| 台中市| 噶尔县| 通城县| 林周县| 乳山市| 汤原县| 磐石市| 高雄市|