Okhttp 保持Session


? ? ? ?下面以一個簡單的例子,說明Okhttp中保持Session的一種簡單方法。其基本原理是先獲取登錄后服務器返回的sessionid,然后在http請求Header中加入包含sessionidcookie,這樣服務器就可以根據sessionid找到相應的Session,從而實現了服務器跟客戶端處在同一Session中,也即保持了Session

獲取sessionid并保存到SharedPreferences:

Headers headers =response.headers();? ? ?//response為okhttp請求后的響應

List cookies = headers.values("Set-Cookie");

String session = cookies.get(0);

String sessionid = session.substring(0,session.indexOf(";"));

SharedPreferences share = getActivity().getSharedPreferences("Session",MODE_PRIVATE);

SharedPreferences.Editor edit = share.edit();//編輯文件

edit.putString("sessionid",sessionid);

edit.commit();

在隨后的請求Header中加入包含sessionid的cookie:

//首先從SharedPreferences中獲取sessionid

SharedPreferences share = getSharedPreferences("Session",MODE_PRIVATE);

String sessionid= share.getString("sessionid","null");? ? ?

//重點:把sessionid加入到請求頭

OkHttpClient okHttpClient = new OkHttpClient();

Request request =new Request.Builder().url(url).addHeader("cookie",sessionid).build();

try{

Response response = okHttpClient.newCall(request).execute();

}catch(IOException e) {

? ? ? ?e.printStackTrace();

}

? ? ? ?這樣就簡單的實現了okhttp保持Session的功能,如有錯誤歡迎留言指正,有疑惑也可加qq951268027一起交流學習。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容