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一起交流学习。

你可能感兴趣的:(Okhttp 保持Session)