工作笔记 -- 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里面并不是这样的。


java2: HttpClient,实现登录,请求等操作,session保持

java2: HttpClient,实现登录,请求等操作,session保持 HttpClient,httpclient.jar包中的,我则喜欢折射成类似于dll以用的形式,知道在哪个n...
  • gaoqiao1988
  • gaoqiao1988
  • 2016年11月29日 11:50
  • 3295

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

最近在开发项目的过程中,遇到android与web服务器要在同一session下通信的问题。 在解决问题前先回顾下Session与Cookie: Cookie和Session都为了用来保存状态信息,都...
  • wuyou1336
  • wuyou1336
  • 2016年03月24日 17:45
  • 1147

Java Web 学习笔记之二:Java HttpURLConnection保持会话的方法

在Java Web开发中,会话保持是服务器识别客户端(一般指浏览器)的方式。对此,各大浏览器都是支持会话保持的。然而在开发者通过Java API HttpURLConnection 开发网络请求工具...
  • johnson_moon
  • johnson_moon
  • 2016年07月04日 00:15
  • 3236

android实现session保持【以及web登陆保持】

对于登录功能本身没有任何特别,使用httpclient向服务器post用户名密码即可。 但是为了保持登录的状态(在各个Activity之间切换时要让网站知道用户一直是处于登录的状态)就需要进行coo...
  • nolouch
  • nolouch
  • 2014年07月07日 15:10
  • 2783

使用Volley实现session会话保持

使用volley很久了,关于volley处理网络请求,其确实封装简化了过程,然而有些功能还是本身不支持,需要自己扩展配置。比如本地保存服务端返回的cookie数据。volley中的Request类,代...
  • qq_16051379
  • qq_16051379
  • 2015年12月19日 14:25
  • 2616

Android客户端与服务器端交互,如何保持session回话

前言 最近在开发项目的过程中,遇到Android与web服务器要在同一session下通信的问题。 一、Session与Cookie的共性与区别: ①、共性 Cookie和Sess...
  • Android_Mnbvcxz
  • Android_Mnbvcxz
  • 2017年03月01日 17:03
  • 2424

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

package com.rainet.tiis.network; import java.util.Iterator; import java.util.List; import java.util...
  • yang_734664103
  • yang_734664103
  • 2014年03月25日 05:29
  • 32378

HTTP协议与状态链接解决方案cookie,session的关系

Session简介 摘要:虽然session机制在web应用程序中被采用已经很长时间了,但是仍然有很多人不清楚session机制的本质,以至不能正确的应用这一技术。本文将详细讨论session的...
  • a675311
  • a675311
  • 2015年12月02日 14:33
  • 1434

HttpClient模仿登陆并维持同一session请求(HttpClient4.3.X以上版本)

有时我们会碰到一种应用场景:就是在请求服务器前需要先验证用户合法,验证通过后,服务器保持保持同一sessionID与客户端交互,下面我模拟这种场景,用户首先发送post请求进行身份验证,通过后,继续发...
  • zmx729618
  • zmx729618
  • 2016年07月01日 15:47
  • 6717

XUtils框架之登录态持久化机制(session保留机制)

在我们平时使用应用程序时会发现一个问题,我使用应用程序时可能会接电话,或者去切出去看微信等,等在进入应用程序时,程序已经被系统杀掉。如果要继续使用应用程序需要重新登录。这样频繁反复登录会使用户极度烦躁...
  • Terry_722
  • Terry_722
  • 2016年04月08日 16:33
  • 2177
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:工作笔记 -- Android 中http请求session保持
举报原因:
原因补充:

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