欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

OkHttp3中默認不保持Cookie的解決方法

 更新時間:2018年04月20日 11:39:53   作者:云之外  
這篇文章主要給大家介紹了關于OkHttp3中默認不保持Cookie的解決方法,文中先對OKhttp3中的cookies進行了簡單的介紹,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。

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)容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關文章

最新評論