Android请求WebService保存用户登录Session

在请求WebService过程中有时需要保存用户的登录信息,在web中都会自动产生一个对应的session,但android中需要自己获取session并保存,再次请求的时候带上保存的session,否则有时会获取不到已登录时的数据,此处网络请求我采用的是HttpGet,下面是登录时保存session的方法

private static final int REQUEST_TIMEOUT = 30*1000;//设置请求超时10秒钟  
private static final int WAIT_TIMEOUT = 30*1000;  //设置等待数据超时时间10秒钟 
public static String getLogin(String name, String pwd){
		String url = SERVICE_URL+ "Login" + "&UserName=" + name + "&UserPwd=" + pwd;
		try {
			HttpGet httpGet = new HttpGet(url);
			DefaultHttpClient httpClient=getThreadSafeClient();
			HttpResponse response = httpClient.execute(httpGet);
			if (response.getStatusLine().getStatusCode() == 200) {
				HttpEntity entity = response.getEntity();
				result = EntityUtils.toString(entity, HTTP.UTF_8);
			}
			//获得Cookie
			List<Cookie> cookies = httpClient.getCookieStore().getCookies(); 
			if (!cookies.isEmpty()) { 
			    for (int i = 0; i < cookies.size(); i++) { 
			    	Cookie cookie = cookies.get(i); 
			        cookieString = cookie.getName() + "=" + cookie.getValue() + ";domain=" + 
			        cookie.getDomain();
			    } 
			} 
		} catch (ClientProtocolException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return result;
}
/**
* ThreadSafeClient
* or Invalid use of SingleClientConnManager: 
* connection still allocated
* @return
*/
public static DefaultHttpClient getThreadSafeClient()  {

	DefaultHttpClient client = new DefaultHttpClient();
	ClientConnectionManager manager = client.getConnectionManager();
	HttpParams params = client.getParams();
	HttpConnectionParams.setConnectionTimeout(params, REQUEST_TIMEOUT);  
	HttpConnectionParams.setSoTimeout(params, SO_TIMEOUT);
	client = new DefaultHttpClient(new ThreadSafeClientConnManager(params, 
	    		manager.getSchemeRegistry()), params);
	   return client;
}
此处注意下次传递的是cookieString,注意格式,下面是再次请求是带上Cookie的方法,只需要传递请求的url就可以了

private static String doHttpGet(String url){
		String get_result = "";
		try {
			HttpGet httpGet = new HttpGet(url);
			//设置Cookie
			httpGet.setHeader("Cookie", cookieString);
			HttpResponse response = httpClient.execute(httpGet);
			if (response.getStatusLine().getStatusCode() == 200) {
				HttpEntity entity = response.getEntity();
				get_result = EntityUtils.toString(entity, HTTP.UTF_8);
			}
		} catch (ClientProtocolException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return get_result;
	}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值