Andrew XUtils的session獲得和cookieStore使用

轉載自:

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);
                    }
            });
    }





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章