前言
关于如何保持保持登录的状态,个人的处理方法的总结,当然可能有其他比较好的保持登录状态的方法。也希望大家能够告诉我。接下来我说一下我自己做的一个app中时如何保存会话的状态的,顺便做个总结。
代码
protected User doInBackground(User... params) {
User user = params[0];
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(CONST.LOGIN_URI+"&username="+user.getUsername()+"&password="+user.getPassword());
Log.e("user:",user.getUsername()+user.getPassword());
User getUser = null;
try {
HttpResponse httpResponse = httpClient.execute(httpPost);
Header headers = httpResponse.getFirstHeader("Set-Cookie");
if (headers!=null)
{
readUtil.SET_SESSIONID(indexActivity.this,headers.getValue());
}
HttpEntity entity = httpResponse.getEntity();
String jsonString = EntityUtils.toString(entity);
ResponseObject response = parseUserJson(jsonString);
if(response.getState()==1){//表示登录成功
getUser = (User) response.getDatas();
MyApp.user = getUser;
}
} catch (IOException e) {
e.printStackTrace();
}
说明
这段代码主要是我在第一次登录的时候,会保存sessionid。首先通过调用httpClient.execute(httpPost)
发送http请求,接着得到返回的httpResponseObject对象,然后通过调用httpResponse.getFirstHeader("Set-Cookie")
获取服务器的响应头,最后我通过调用readUtil.SET_SESSIONID(indexActivity.this,headers.getValue())
来取得字符串然后保存在xml文件当中。
接下来看一下保存的方法:
public static void SET_SESSIONID(Context context,String SESSION_ID){
SharedPreferences.Editor editor = context.getSharedPreferences(FILE_NAME,Context.MODE_PRIVATE).edit();
editor.putString("SESSION_ID",SESSION_ID);
editor.commit();
return ;
}
很简单,就是保存了cookie在xml当中。
然后在登录之后,下次再请求服务器的时候,如果我们要保证服务器识别到的是同一个用户,那么我们还需要做一些操作httpPost.setHeader("Cookie",readUtil.GET_SESSIONID(getActivity()))
,将保存的cookie放在httpPost的请求当中,这样访问服务器时,服务器就会认为是同一个用户了。也就是说保持了这个会话。