轉載自:
http://www.cnblogs.com/bxfx111/p/4153389.html?utm_source=tuicool
之前使用過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
private void httpLogin() {
final HttpUtils http = new HttpUtils();
RequestParams params = new RequestParams();
String url = "http://192.168.1.60/auto/login_Login.action?oper.operatorName=123&oper.password=123";
final String urlPost="http://192.168.1.60/auto/login_Login.action";
params.addBodyParameter("oper.operatorName","123");
params.addBodyParameter("oper.password","123");
http.send(HttpRequest.HttpMethod.POST,
urlPost,
params,
new RequestCallBack<String>() {
@Override
public void onStart() {
pg.show();
Log.d("jack",urlPost);
}
@Override
public void onLoading(long total, long current, boolean isUploading) {
pg.show();
}
@Override
public void onSuccess(ResponseInfo<String> responseInfo) {
pg.dismiss();
Log.d("jack",responseInfo.result);
//===========================
// 取得sessionid.........................
DefaultHttpClient dh = (DefaultHttpClient) http.getHttpClient();
MyCookieStore.cookieStore = dh.getCookieStore();
CookieStore cs = dh.getCookieStore();
List<Cookie> cookies = cs.getCookies();
String aa = null;
for (int i = 0; i < cookies.size(); i++) {
if ("JSESSIONID".equals(cookies.get(i).getName())) {
aa = cookies.get(i).getValue();
break;
}
}
Log.d("jack", "比較sessionid" + aa);
//===========================
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
startActivity(intent);
}
@Override
public void onFailure(HttpException error, String msg) {
pg.dismiss();
Log.d("jack","哈哈"+msg);
}
});
}
關鍵代碼:
//===========================
// 取得sessionid.........................
DefaultHttpClient dh = (DefaultHttpClient) http.getHttpClient();
MyCookieStore.cookieStore = dh.getCookieStore();
CookieStore cs = dh.getCookieStore();
List<Cookie> cookies = cs.getCookies();
String aa = null;
for (int i = 0; i < cookies.size(); i++) {
if ("JSESSIONID".equals(cookies.get(i).getName())) {
aa = cookies.get(i).getValue();
break;
}
}
Log.d("jack", "比較sessionid" + aa);
//===========================
這裏面的MyCookieStore是自定義的一個保存類:
MyCookieStore.java
import org.apache.http.client.CookieStore;
public class MyCookieStore {
public static CookieStore cookieStore=null;
}
最後就是在登陸後訪問服務器的時候添加一句話:http.configCookieStore(MyCookieStore.cookieStore);
給個類裏的代碼看看吧:
SecondActivity.java
private void httpLogin() {
HttpUtils http = new HttpUtils();
final String urlGet="http://192.168.1.60/auto/carModel_queryPL.action";
http.configCookieStore(MyCookieStore.cookieStore);
http.send(HttpRequest.HttpMethod.POST,
urlGet,
new RequestCallBack<String>() {
@Override
public void onStart() {
pg.show();
Log.d("jack",urlGet);
}
@Override
public void onLoading(long total, long current, boolean isUploading) {
pg.show();
}
@Override
public void onSuccess(ResponseInfo<String> responseInfo) {
pg.dismiss();
Log.d("jack","排量"+responseInfo.result);
}
@Override
public void onFailure(HttpException error, String msg) {
pg.dismiss();
Log.d("jack","排量"+msg);
}
});
}