前言
最近因为工作的需要,要实现一个功能,就是需要通过发送短信进行注册,现在想把短信验证码放到服务器的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的方法详解所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)