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