工作笔记 -- Android 中http请求session保持

原创 2014年02月09日 16:30:18

Android中像网站一样session保持,前段时间做项目的时候,有了保持session的需求。借助各种搜素后,发现了一种方案。这里记录下来,留待以后用。

Android访问服务器时,我通常用httpClient,感觉这个比较方便。用httpClient 访问web Server 时,服务器每次都会产生不同的session。所以无法达到session保持。保持

session的原理是在需要保持session的时候,返回给客户端对应的sessionID,并且由客户端把sessionID 在请求的时候发送到服务器。这样服务器就会认为请求的客户端认为是对应sessionID的session了。下面一段代码是请求java语言,tomcat服务器下的代码。

public static String httpPostRequestUtil(String pUrl,
			List<? extends NameValuePair> pParam,String sessionID) {
		try {
			BasicHttpParams httpParams = new BasicHttpParams();
			HttpConnectionParams.setConnectionTimeout(httpParams,
					REQUEST_TIMEOUT);
			HttpConnectionParams.setSoTimeout(httpParams, SO_TIMEOUT);
			HttpClient httpclient = new DefaultHttpClient(httpParams);

			HttpPost httppost = new HttpPost(pUrl);
			httppost.setEntity(new UrlEncodedFormEntity(pParam, HTTP.UTF_8));
			
			if(null != sessionID){
				httppost.setHeader("Cookie", "JSESSIONID=" + sessionID);
            } 
			
			HttpResponse response = httpclient.execute(httppost);
			if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
				String strResult = EntityUtils.toString(response.getEntity());
				return strResult;
			}
		} catch (ConnectTimeoutException e) {
			// 链接超时
			// e.printStackTrace();
			return "-1";
		} catch (SocketTimeoutException e) {
			// 数据请求超时
			// e.printStackTrace();
			return "-2";
		} catch (Exception e) {
			e.printStackTrace();
			return "";
		}
		return "";
	}

上面红字的部分,是关键。这里的“JSESSIONID” 对应了,java语言可识别的sessionID。而在PHP里面并不是这样的。


相关文章推荐

android http请求实现session传递与传递参数

在最近写的一个Android中需要请求web服务器中的数据,有一个登录Activity,登录后会到MainActivity,这中间登录和MainActivity都需要请求php的jsonapi,所以要...

HTTP协议 Tomcat Session管理的工作原理

HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。 HTTP协议的主要特点: 1.支持客户/服务器模式。 2.简单快速:客户向服务器请求服务时,只需传...

HTTP Session和Cookie工作原理

session的工作原理  术语session  在我的经验里,session这个词被滥用的程度大概仅次于transaction,更加有趣的是transaction与session在某些语境下...

http相关的session及cookie的工作原理与身份认证

类型选原创是有点惭愧 其实是我看了这篇文章的总结:http://blog.csdn.net/kgd1120/article/details/2159458 写得很好,就是略长,后面java的htt...

HTTP Session工作原理的简单介绍

HTTP协议(http://www.w3.org/Protocols/)是“一次性单向”协议。  服务端不能主动连接客户端,只能被动等待并答复客户端请求。客户端连接服务端,发出一个HTTP Requ...

Android 通过httpclient请求web服务器,并解决用户登录session保持

package com.rainet.tiis.network; import java.util.Iterator; import java.util.List; import java.util...

android 保持同一Session网络请求

关于多次网络请求不在同一个Session(会话)的原因:每次请求的方法不同(例如:分别使用httpclient和httpUrlConnecttion等不同的网络请求方法)...

《Android开发进阶从小工到专家》HTTP网络请求读书笔记

一、Http 网络请求原理 HTTP 是一种应用层协议,它通过TCP 实现了可靠的数据传输,能够保证数据的完整性,正确性,而TCP 对于数据传输控制的优点也能够体现在HTTP上,使得HTTP的数据传...

Android开发笔记-使用Volley开源库进行Http网络请求(POST方式)

之前使用了开源网络请求库Volley进行了Http GET请求。这次我们讨论使用Volley进行POST请求。POST请求比GET稍微复杂一点点。可以认为是建立在GET的基础上。POST使发送的url...
  • errvv
  • errvv
  • 2016年01月29日 10:01
  • 164

Android学习笔记——Http通信 源码

  • 2017年02月01日 20:02
  • 2.74MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:工作笔记 -- Android 中http请求session保持
举报原因:
原因补充:

(最多只允许输入30个字)