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     }
时间: 2024-11-13 08:53:48

Andrew XUtils的session获得和cookieStore使用的相关文章

Android使用Xutils保存cookie实现登录后访问

http://blog.memecodes.com/340.html 在http连接中,会存在着cookie状态,需要访问登录后的网页,就必须保存用于认证的cookie:之后每次发送请求,将保存的cookie一并带上便可实现登录后访问.开发中,一般都会使用组件.框架.平台等方式来进行快速开发,本文将介绍使用Xutils框架如何来保存cookie. 使用Xutils保存cookie 1 HttpUtils com.lidroid.xutils.HttpUtils.configCookieStore

android如何与asp.net服务端共享session

近期需要实现一个功能,就是需要通过发送短信进行注册,现在想把短信验证码放到服务器的session值中,当客户端收到短信并提交短信码时由asp.net服务端进行判断,那么如何共享这个session那么需要在android客户端中添加几行代码.如下操作.第一次数据请求时就获取这个cookie的名称并且得到这个cookie的值,这个即是sessionid的值并保存在一个静态变量中,然后在第二次请求数据的时候要将这个sessionid一并放在Cookie中发给服务器,服务器则是通过这个sessionid

Andrew Ng机器学习入门——线性回归

本人从2017年起,开始涉猎机器学习.作为入门,首先学习的是斯坦福大学Andrew Ng(吴恩达)教授的Coursera课程 2 单变量线性回归 线性回归属于监督学习(Supervise Learning),就是Right answer is given. 课程中,举了一个估计房产价格的例子,在此,我就直接使用两组数据去作为例子使用线性回归,拟合出效果最好的曲线. 2.1 单变量线性回归算法的思路 根据数据的分布,确定模型其中,h(x)是假设函数(Hypothesis Fuction),θ1和θ

Android HTTP session &amp;&amp; cookie

HTTP协议与状态保持HTTP协议本身是无状态的,这与HTTP协议本来的目的是相符的,客户端只需要简单的向服务器请求下载某些文件,无论是客户端还是服务器都没有必要纪录彼此过去的行为,每一次请求之间都是独立的,好比一个顾客和一个自动售货机或者一个普通的(非会员制)大卖场之间的关系一样.         然而聪明(或者贪心?)的人们很快发现如果能够提供一些按需生成的动态信息会使web变得更加有用,就像给有线电视加上点播功能一样.这种需求一方面迫使HTML逐步添加了表单.脚本.DOM等客户端行为,另一

[C4] Andrew Ng - Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization

About this Course This course will teach you the "magic" of getting deep learning to work well. Rather than the deep learning process being a black box, you will understand what drives performance, and be able to more systematically get good res

java实现类似python requests的session功能

怎么在java中实现类似于python的requests模块的session功能呢.java也是可以实现的,用java的okhttp包可以实现. 在pom.xml中加入相关依赖 <!-- https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp --> <dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>

COOKIE+SESSION

cookie的缺点: 因为cookie保存在浏览器上,所以安全性低可控性比较差,只能存放字符串大多数的浏览器对cookie有4K的限制. 下面是cookie在浏览器和服务器中请求与响应的过程: 1.    COOKIE的工作原理 cookie过程描述 网站为了辨别用户身份.进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密) 用户第一次访问你的网站->在服务器端会将用户的信息设置为cookie(可以理解为制造饼干过程)->通过http协议发送给用户(浏览器),在用户端,coo

Nginx做负载均衡时session共享问题详解

用nginx做负载均衡时,同一个IP访问同一个页面会被分配到不同的服务器上,如果session不同步的话,就会出现很多问题,比如说最常见的登录状态. 再者Nginx连接Memcached集群时,Nignx的请求从memcached服务器中根据key获得了value则直接返回value,如果没有获得到value则去MySQL中查询再返回. location / { set $memcached_key "$request_uri"; #设置请求memcached服务器的key memca

会话技术Session&amp;Cookie

一.会话技术简介 1.存储客户端的状态 由一个问题引出今天的内容,例如网站的购物系统,用户将购买的商品信息存储到哪     里?因为Http协议是无状态的,也就是说每个客户访问服务器端资源时,服务器并不知道该客户端是谁,所以需要会话技术识别客户端的状态.会话技术是帮助服务器   记住客户端状态(区分客户端) 举例购物过程: 2.会话技术 从打开一个浏览器访问某个站点,到关闭这个浏览器的整个过程,成为一次会话.会话技术就是记录这次会话中客户端的状态与数据的. 会话技术分为Cookie和Sessio