Http中Cookie详解以及Android中操作Cookie
来源:互联网 发布:学唱简谱软件 编辑:程序博客网 时间:2024/06/16 15:36
一. 关于Cookie
一句话概括就是:cookie就是一系列的键值对组成的字符串
二. Cookie的最常用场景
登录状态的判定等
前言
以前看过不少关于cookie的文章,至于写的好坏不做评价,反正我是没看多明白如何操作cookie,也有可能是个人水平不行,无法理解别人的讲解。最近一直在学习后台开发,加上个人一直在做移动端开发,之前一直不明白的地方现在都豁然开朗了,于是打算写这篇文章了。
如果是在浏览器中,浏览器会管理cookie,不用人为干涉,但是在移动端开发时就不同了,需要手动传递cookie,和服务端交流。如果服务器按照传统的页面开发实现实现接口,那么移动客户端就要实现像浏览器一样操作cookie。
1.想明白如何操作cookie,就必须明白cookie是什么,以及cookie是如何传递的
请求参数:
返回参数:
a)先看响应,返回数据的头中有一系列的key为Set-Cookie的键值对
先说第一个Set-Cookie:JSESSIONID
这时用来实现会话的,如果是第一次访问,请求的参数中没有这个参数,服务器会生成一个JSESSIONID放在响应头中,下次在访问的时候,浏览器就会把这个参数带上
第一幅图中的Cookie中就有JSESSIONID,这说明已经不是第一次访问了
而第二幅图中返回的头中有JSESSIONID,说明这次的请求是第一次请求
这两幅图并不是同一次的请求和响应
第二幅图中的其它Set-Cookie
都是服务器返回的其它键值对,浏览器不用关心它们是什么意思,下次访问的时候直接在返回给服务端就是。
其中第二个Set-Cookie长得与其它不太一样,多了一个Expires
,这个是表示这个键值对过期时间,如果过期了,下次请求浏览器就不会把这个键值对带过去
b)再看请求:
请求的头中Cookie就是把所有的服务器之前返回的Cookie以分号;
进行分割,拼成了一个字符串传给了服务器。
例如之前服务器响应了JSESSIONID、akey、bkey、ckey四个键值对,再次访问的时候,浏览器就会把没有过期的cookie再次发送给服务器。
上面提到的akey设置了过期时间,如果akey过期了,那么请求中就不会把akey加到Cookie中。只会发送JSESSIONID、bkey、ckey
c)Cookie的识别
当我们访问的路径地址中包含此cookie的path,则携带。例如:http://localhost:8080/day11/hello,就会把下图中的ckey带着
path会有一个默认值,过期时间如果不设置,默认就是关闭浏览器时过期
2.利用HttpURLConnection操作Cookie,模拟浏览器
a)获取Cookie
getHeaderFields()
方法,返回结果是Map<String,List<String>>
类型
HttpURLConnection httpConn = null;...Map<String,List<String>> cookies = httpConn.getHeaderFields();List<String> setCookies = cookies.get("Set-Cookie");
这样就可以吧所有的Set-Cookie
字段都拿到。存起来,至于怎么存,无所谓,自己决定
b)携带Cookie
// 把你存的Cookie键值对用分号分隔,拼成一个字符串,是不是需要把所有Cookie都拼进来,看实际情况// 例如你有10个键值对,有3个过期的,肯定不要了,至于过期判定,前面有说到,这个就需要你按照规定的格式判断出来。还有两个可能是这次请求不需要的,也可以不带,为了简单可以直接把所有没过期的都带上,省事,服务器爱用不用。String cookie = "JSESSIONID=xxx;key1=value1;key2=value2"conn.setRequestProperty("Cookie", cookie);
这样就可以传给服务器,就是在和么简单。
c)会话保持
拿到的Cookie中如果有JSESSIONID就存起来,每次请求都带着,这样就能实现保持会话,如果某次请求服务器告诉你需要重新新登录了,那么你就把保存的JSESSIONID删了,并且请求中不携带JSESSIONID,服务器会再给你一个新的,保存下来以后继续用即可。
以上就是关于Cookie的讲解,基本结构和流程已经说明白了,使用方法也介绍了,具体如何实现就自行发挥吧,例如如何存储Cookie,按照自己的喜好来吧
- Http中Cookie详解以及Android中操作Cookie
- Http中Set-Cookie
- Javascript中 cookie的操作和详解
- JS中对Cookie的操作详解
- ASP中操作cookie
- jsp中操作Cookie
- Web中cookie操作
- js中操作cookie
- js中操作cookie
- php 中 Cookie 详解
- js 中cookie详解
- jQuery中cookie详解
- Cookie操作以及如何在js中调用jsp变量
- java jsp 中 cookie用法详解 以及 cookie与session的区别
- js中常用cookie操作
- java中对Cookie操作
- J2EE中Servlet操作cookie
- Java servlet中操作cookie
- 九、excel导入数据查重问题
- NOIP 2013 Senior 4
- 模拟实现部分字符串函数
- ios-图片概述
- Java类加载器总结
- Http中Cookie详解以及Android中操作Cookie
- Alerter华丽的消息推送栏
- 全面的IE兼容性调试问题
- 水平滚动导航菜单
- VSFTPD设置匿名登陆
- Java值传递小结
- jquery.countdown 倒计时插件的学习
- 有限状态机基础知识记录
- Hive中的函数