Andrew XUtils的session获得和cookieStore使用

来源:互联网 发布:windows php zip扩展 编辑:程序博客网 时间:2024/06/01 17:54

转载自:

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





0 0