国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

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

2019-10-22 18:12:41
字體:
來源:轉載
供稿:網友

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();

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新郑市| 拜城县| 元朗区| 咸宁市| 莱阳市| 慈溪市| 哈巴河县| 调兵山市| 鄂州市| 儋州市| 韶关市| 鱼台县| 宁南县| 扶绥县| 五莲县| 庆阳市| 松阳县| 宁阳县| 新巴尔虎左旗| 师宗县| 九江市| 景谷| 吉水县| 延安市| 舟山市| 桂平市| 清水县| 嘉兴市| 平乐县| 丘北县| 西青区| 宁安市| 平和县| 洛扎县| 长白| 尼木县| 洪江市| 黑河市| 江山市| 会理县| 安远县|