Andrew XUtils的session获得和cookieStore使用

之前使用过XUtils框架做过项目,当时因为session纠结了好久,但是解决了,现在回想起来,好像没有备份,赶紧写份笔记备份下,以后方便使用。

主要是登陆服务器后,应该保存一个登陆状态,登陆后,会保存个登陆状态,只有保存这个状才能有权限访问对应的内容,否则,返回的是一堆html格式的网页。

这时候,就会考虑到保存Cookie。直接上代码吧:

这里是登陆界面:

MainActivity.java对应的import

import org.apache.http.client.CookieStore;
import org.apache.http.cookie.Cookie;
import org.apache.http.impl.client.DefaultHttpClient;
MainActivity.java
 1 private void httpLogin() {
 2         final HttpUtils http = new HttpUtils();
 3         RequestParams params = new RequestParams();
 4         String url = "http://192.168.1.60/auto/login_Login.action?oper.operatorName=123&oper.password=123";
 5         final String urlPost="http://192.168.1.60/auto/login_Login.action";
 6         params.addBodyParameter("oper.operatorName","123");
 7         params.addBodyParameter("oper.password","123");
 8         http.send(HttpRequest.HttpMethod.POST,
 9                 urlPost,
10                 params,
11                 new RequestCallBack<String>() {
12 
13                     @Override
14                     public void onStart() {
15                         pg.show();
16                         Log.d("jack",urlPost);
17                     }
18 
19                     @Override
20                     public void onLoading(long total, long current, boolean isUploading) {
21                         pg.show();
22                     }
23 
24                     @Override
25                     public void onSuccess(ResponseInfo<String> responseInfo) {
26                         pg.dismiss();
27                         Log.d("jack",responseInfo.result);
28                         //===========================
29                         // 取得sessionid.........................
30 
31                         DefaultHttpClient dh = (DefaultHttpClient) http.getHttpClient();
32                         MyCookieStore.cookieStore = dh.getCookieStore();
33                         CookieStore cs = dh.getCookieStore();
34                         List<Cookie> cookies = cs.getCookies();
35                         String aa = null;
36                         for (int i = 0; i < cookies.size(); i++) {
37                             if ("JSESSIONID".equals(cookies.get(i).getName())) {
38                                 aa = cookies.get(i).getValue();
39                                 break;
40                             }
41                         }
42                         Log.d("jack", "比较sessionid" + aa);
43                         //===========================
44                         Intent intent = new Intent(MainActivity.this,SecondActivity.class);
45                         startActivity(intent);
46                     }
47 
48                     @Override
49                     public void onFailure(HttpException error, String msg) {
50                         pg.dismiss();
51                         Log.d("jack","哈哈"+msg);
52                     }
53             });
54     }

关键代码:

 1 //===========================
 2                         // 取得sessionid.........................
 3                         DefaultHttpClient dh = (DefaultHttpClient) http.getHttpClient();
 4                         MyCookieStore.cookieStore = dh.getCookieStore();
 5                         CookieStore cs = dh.getCookieStore();
 6                         List<Cookie> cookies = cs.getCookies();
 7                         String aa = null;
 8                         for (int i = 0; i < cookies.size(); i++) {
 9                             if ("JSESSIONID".equals(cookies.get(i).getName())) {
10                                 aa = cookies.get(i).getValue();
11                                 break;
12                             }
13                         }
14                         Log.d("jack", "比较sessionid" + aa);
15                         //===========================

这里面的MyCookieStore是自定义的一个保存类:

MyCookieStore.java
1 import org.apache.http.client.CookieStore;
2 
3 public class MyCookieStore {
4 
5     public static CookieStore cookieStore=null;
6     
7 }

最后就是在登陆后访问服务器的时候添加一句话:

http.configCookieStore(MyCookieStore.cookieStore);

给个类里的代码看看吧:

SecondActivity.java
 1 private void httpLogin() {
 2         HttpUtils http = new HttpUtils();
 3         final String urlGet="http://192.168.1.60/auto/carModel_queryPL.action";
 4         http.configCookieStore(MyCookieStore.cookieStore);
 5         http.send(HttpRequest.HttpMethod.POST,
 6                 urlGet,
 7                 new RequestCallBack<String>() {
 8 
 9                     @Override
10                     public void onStart() {
11                         pg.show();
12                         Log.d("jack",urlGet);
13                     }
14 
15                     @Override
16                     public void onLoading(long total, long current, boolean isUploading) {
17                         pg.show();
18                     }
19 
20                     @Override
21                     public void onSuccess(ResponseInfo<String> responseInfo) {
22                         pg.dismiss();
23                         Log.d("jack","排量"+responseInfo.result);
24                     }
25 
26                     @Override
27                     public void onFailure(HttpException error, String msg) {
28                         pg.dismiss();
29                         Log.d("jack","排量"+msg);
30                     }
31             });
32     }

 

posted @ 2014-12-09 15:27  F_YuXiang  阅读(3738)  评论(0编辑  收藏  举报