[Android] 使用Cookie保持会话

前言

关于如何保持保持登录的状态,个人的处理方法的总结,当然可能有其他比较好的保持登录状态的方法。也希望大家能够告诉我。接下来我说一下我自己做的一个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的请求当中,这样访问服务器时,服务器就会认为是同一个用户了。也就是说保持了这个会话。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值