android与asp.net服务端共享session的方法详解

android与asp.net服务端共享session的方法详解,第1张

概述前言最近因为工作的需要,要实现一个功能,就是需要通过发送短信进行注册,现在想把短信验证码放到服务器的session值中,当客户端收到短信并提交短信码时由asp.net服务端进行判断,那么如何共享这个session那么需要

前言

最近因为工作的需要,要实现一个功能,就是需要通过发送短信进行注册,现在想把短信验证码放到服务器的session值中,当客户端收到短信并提交短信码时由asp.net服务端进行判断,那么如何共享这个session那么需要在androID客户端中添加几行代码。

实现方法

如下 *** 作。第一次数据请求时就获取这个cookie的名称并且得到这个cookie的值,这个即是sessionID的值并保存在一个静态变量中,然后在第二次请求数据的时候要将这个sessionID一并放在cookie中发给服务器,服务器则是通过这个sessionID来识别究竟是那个客户端在请求数据的,在asp.net中这个sessionID的名字叫做ASP.NET_SessionID,当然我们可以从程序中获取。

如下代码:

//获取服务端的这个sessionID的名称/* 获取cookieStore */ List<cookie> cookies = cookieStore.getcookies(); for(int i=0;i<cookies.size();i++){   String sessionID = cookies.get(i).getname(); 从这里可以获取到这个sessionID,即为 ASP.NET_SessionID}

获取sessionID的值

for(int i=0;i<cookies.size();i++){if("ASP.NET_SessionID".equals(cookies.get(i).getname())){   JsESSIONID = cookies.get(i).getValue(); //这个即为sessionID的值  break; }}

完整的httputils代码如下:

public static DefaulthttpClIEnt httpClIEnt = null; private static String JsESSIONID; //定义一个静态的字段,保存sessionID  public static String getRequest(String url) { httpClIEnt = new DefaulthttpClIEnt(); httpGet get = new httpGet(url); try { httpParams params = new BasichttpParams();  httpconnectionParams.setConnectionTimeout(params,10000);//设置连接超时  httpconnectionParams.setSoTimeout(params,15000);//设置请求超时  get.setParams(params);  get.setheader("Content-Type","application/x-www-form-urlencoded; charset=utf-8");  if(null != JsESSIONID){   get.setheader("cookie","ASP.NET_SessionID="+JsESSIONID);   }  //连接响应,通过httpResponse获得响应信息 httpResponse httpResponse = httpClIEnt.execute(get); if(httpResponse.getStatusline().getStatusCode() == 200) { //取得响应字符串 String result = EntityUtils.toString(httpResponse.getEntity()); return result; } } catch (ClIEntProtocolException e) { return null; } catch (IOException e) { return null; } return null; }  public static String postRequest(String url,HashMap<String,String> rawParams) throws Exception { httpClIEnt = new DefaulthttpClIEnt(); //创建POST请求方式 httpPost post = new httpPost(url);  httpParams cparams = new BasichttpParams();  httpconnectionParams.setConnectionTimeout(cparams,10000);//设置连接超时 httpconnectionParams.setSoTimeout(cparams,15000);//设置请求超时 post.setParams(cparams); post.setheader("Content-Type","application/x-www-form-urlencoded; charset=utf-8"); if(null != JsESSIONID){  post.setheader("cookie","ASP.NET_SessionID="+JsESSIONID);   } //使用nameValuePair来保存要传递的参数,可以使用BasicnameValuePair来构造一个要被传递的参数 //通过add添加这个参数到nameValuePair中 ArrayList<nameValuePair> params = new ArrayList<nameValuePair>(); for(String key : rawParams.keySet()) { //添加要传传递的参数 params.add(new BasicnameValuePair(key,rawParams.get(key))); } //post需要为参数设置字符集 httpentity httpentity = new UrlEncodedFormEntity(params,http.UTF_8); //请求httpRequest post.setEntity(httpentity); //发送POST请求并获取响应 httpResponse httpResponse = null; try {  httpResponse = httpClIEnt.execute(post); } catch(Exception ex) { String ee = ex.getMessage(); } if(httpResponse.getStatusline().getStatusCode() == 200) { String result = EntityUtils.toString(httpResponse.getEntity(),http.UTF_8); /* 获取cookieStore        ASP.NET_SessionID就是通过上面的方法获取到。      */    cookieStore cookieStore = httpClIEnt.getcookieStore();    List<cookie> cookies = cookieStore.getcookies();   for(int i=0;i<cookies.size();i++){     if("ASP.NET_SessionID".equals(cookies.get(i).getname())){      JsESSIONID = cookies.get(i).getValue();      break;     }    }  return result; } return null; }

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对编程小技巧的支持。
 

总结

以上是内存溢出为你收集整理的android与asp.net服务端共享session的方法详解全部内容,希望文章能够帮你解决android与asp.net服务端共享session的方法详解所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1144539.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存