nandai136的专栏

个人收获的记录

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

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
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

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

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭