? ? ? ?下面以一個簡單的例子,說明Okhttp中保持Session的一種簡單方法。其基本原理是先獲取登錄后服務器返回的sessionid,然后在http請求Header中加入包含sessionid的cookie,這樣服務器就可以根據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一起交流學習。