关闭

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

750人阅读 评论(0) 收藏 举报
分类:

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


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:11544次
    • 积分:259
    • 等级:
    • 排名:千里之外
    • 原创:15篇
    • 转载:4篇
    • 译文:1篇
    • 评论:1条
    文章分类