Android与服务器通信保持同一Session.ppt_第1页
Android与服务器通信保持同一Session.ppt_第2页
Android与服务器通信保持同一Session.ppt_第3页
Android与服务器通信保持同一Session.ppt_第4页
Android与服务器通信保持同一Session.ppt_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Android保持同一Session,引题,Android客户端在和web服务器连接时,每次请求数据时,服务如何确定是同一客户在请求连接。 为此,直接通过一个叫做name为sessionid的cookie来传递的,只要在每次数据请求时保持sessionid是同一个不变就可以用到web的session了,做法是第一次数据请求时就获取sessionid的值并保存在一个静态变量中,然后在第二次请求数据的时候要将这个sessionid一并放在Cookie中发给服务器,服务器则是通过这个sessionid来识别究竟是那个客户端在请求数据的。,1、Session介绍 2、Cookie介绍 3、Sessio

2、n与Cookie的区别 4、代码实现,主题,一、Session介绍,Session是指一个终端用户与交互系统进行通信的时间间隔,通常指从注册进入系统到注销退出系统之间所经过的时间以及如果需要的话。具体到Web中的Session指的就是用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间。因此从上述的定义中我们可以看到,Session实际上是一个特定的时间概念。,session的工作原理,(1)当一个session第一次被启用时,一个唯一的标识被存储于本地的cookie中。 (2)首先使用session_start()函数,从session仓库中加载已

3、经存储的session变量。 (3)当执行脚本时,通过使用session_register()函数注册session变量。 (4)当脚本执行结束时,未被销毁的session变量会被自动保存在本地一定路径下的session库中,下次浏览网页时可以加载使用。,Session机制,Session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。 当程序需要为某个客户端的请求创建一个session的时候,服务器首先检查这个客户端的请求里是否已包含了一个session标识 - 称为 session id,如果已包含一个session id则说明以前已经为此客户

4、端创建过session,服务器就按照session id把这个 session检索出来使用(如果检索不到,可能会新建一个),如果客户端请求不包含session id,则为此客户端创建一个session并且生成一个与此session相关联的session id,session id的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个 session id将被在本次响应中返回给客户端保存。,二、cookie介绍,Cookie是由服务器端生成,发送给User-Agent(一般是浏览器),浏览器会将Cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站时就发送该Co

5、okie给服务器(前提是浏览器设置为启用cookie)。Cookie名称和值可以由服务器端开发自己定义,对于JSP而言也可以直接写入jsessionid,这样服务器可以知道该用户是否合法用户以及是否需要重新登录等,服务器可以设置或读取Cookies中包含信息,借此维护用户跟服务器会话中的状态。,三、Session与Cookie的区别(一),1)Cookie将状态保存在客户端,Session将状态保存在服务器端; 2)Cookies是服务器在本地机器上存储的小段文本并随每一个请求发送至同一个服务器。网络服务器用HTTP头向客户端发送cookies,在客户终端,浏览器解析这些cookies并将它们

6、保存为一个本地文件,它会自动将同一服务器的任何请求缚上这些cookies。,Session与Cookie的区别(二),3)Session是针对每一个用户的,变量的值保存在服务器上,用一个sessionID来区分是不同用户session变量,这个值是通过用户的浏览器在访问的时候返回给服务器,当客户禁用cookie时,这个值也可能设置为由get来返回给服务器; 4)就安全性来说:当你访问一个使用session 的站点,同时在自己机器上建立一个cookie,建议在服务器端的SESSION机制更安全些,因为它不会任意读取客户存储的信息。,四、代码实现,public class HttpUtils pu

7、blic static final String PATH = “http:/I服务器的IP地址/SSHTest/; public static String JSPSESSID = null;/静态变量用来保存jspsessid的值 / 通过url发送post请求,第一次请求后保存sessionID public static String queryStringForPost(String url) HttpPost httpPost = new HttpPost(url);/实例化httppost String result = null; if (null != JSPSESSID)

8、/判断sessionid是否为空,不为空将就将jspsessid的值放在cookie中发送给服务器 httpPost.setHeader(Cookie, JSPSESSID= + JSPSESSID); /实例化连接 DefaultHttpClient httpClient = new DefaultHttpClient(); try /实例化返回结果 HttpResponse response = httpClient.execute(httpPost); /返回状态码为200,表示成功 if (response.getStatusLine().getStatusCode() = 200)

9、result = EntityUtils.toString(response.getEntity(),HTTP.UTF_8) ;,CookieStore mCookieStore = httpClient.getCookieStore();/取得cookiestore List list = mCookieStore.getCookies(); for (int i = 0; i list.size(); i+) /读取CookieJSPSESSID的值存在静态变量中,保证每次都是同一个值 if (JSPSESSID.equals(list.get(i).getName() JSPSESSID = list.get(i).getValue(); return result; catch (ClientProtocolException e)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论