Andrew XUtilsのセッション獲得とcookieStore使用

15922 ワード

以前XUtilsフレームワークを使ってプロジェクトをしたことがありますが、その時はsessionで悩んでいましたが、解決しました.今思えば、バックアップがないようで、急いでメモを書いてバックアップして、後で使いやすいです.
主にサーバーにログインした后、1つのログイン状态を保存すべきで、ログイン后、1つのログイン状态を保存して、この状态を保存してやっと対応する内容にアクセスする権限があって、さもなくば、帰ってくるのはhtmlフォーマットのホームページです.
このとき、クッキーを保存することを考えます.コードを直接付けましょう.
ここはログインインタフェースです.
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     }