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 }