Android请求WebService保存用户登录Session

来源:互联网 发布:php成绩管理系统源码 编辑:程序博客网 时间:2024/05/15 04:48

在请求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);}//获得CookieList<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 blocke.printStackTrace();} catch (ParseException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.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);//设置CookiehttpGet.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 blocke.printStackTrace();} catch (ParseException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}return get_result;}
原创粉丝点击