iOS 读书笔记-cookie
2015-08-05 10:17
225 查看
cookie是什么东西?
Cookie/Session机制详解这位博主写的很详细,可以看一下。
iOS 应用中可以在http连接中方便的使用cookie。url加载框架帮我们做了大量的工作以利用协议的这个特征。
经常用到cookie的地方有3个:检索cookie的值、显示删除cookie、手工将cookie加到请求中。
url加载系统会自动处理所有http/s请求的cookie,会将返回的cookie保存在响应中,然后按照cookie处理规则将其添加到随后的请求中。
url加载系统提供了两个重要的对象以管理cookie:NSHttpCookie与NSHttpCookieStorage。
NSHttpCookie是通过属性来表示cookie,NSHttpCookieStorage是单例对象,用来管理应用的cookie。ios 的沙盒模式,cookie应用中不能共享。
实例:
代码还可以对每个请求停止使用自动化cookie处理,这是通过调用
这样可以组织URL加载系统处理返回的请求。
1、从响应中获取cookie
从响应中获取cookie 然后根据名字查找特定的cookie是神常见的事。
2 删除cookie
3创建cookie
到此结束。。。。
文章内容摘自《ios网络高级编程》
Cookie/Session机制详解这位博主写的很详细,可以看一下。
iOS 应用中可以在http连接中方便的使用cookie。url加载框架帮我们做了大量的工作以利用协议的这个特征。
经常用到cookie的地方有3个:检索cookie的值、显示删除cookie、手工将cookie加到请求中。
url加载系统会自动处理所有http/s请求的cookie,会将返回的cookie保存在响应中,然后按照cookie处理规则将其添加到随后的请求中。
url加载系统提供了两个重要的对象以管理cookie:NSHttpCookie与NSHttpCookieStorage。
NSHttpCookie是通过属性来表示cookie,NSHttpCookieStorage是单例对象,用来管理应用的cookie。ios 的沙盒模式,cookie应用中不能共享。
typedef NS_ENUM(NSUInteger, NSHTTPCookieAcceptPolicy) { NSHTTPCookieAcceptPolicyAlways, //默认值保存所有返回cookie NSHTTPCookieAcceptPolicyNever,//不保存cookie NSHTTPCookieAcceptPolicyOnlyFromMainDocumentDomain//只保存与请求域相匹配的cookie };
实例:
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyNever];
代码还可以对每个请求停止使用自动化cookie处理,这是通过调用
[request setHTTPShouldHandleCookies:NO];//request为NSMutableURLRequest对象
这样可以组织URL加载系统处理返回的请求。
1、从响应中获取cookie
从响应中获取cookie 然后根据名字查找特定的cookie是神常见的事。
NSURL *url = [NSURL URLWithString:@"http://sale.jd.com/act/yRkab6FWMOlUV.html?cpdad=1DLSUE"]; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; NSHTTPURLResponse *response ; NSError *error; if (error) { NSLog(@"出现错误"); } NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; NSDictionary *headers = [response allHeaderFields];//获取响应头所有的键值 NSLog(@"headers = %@",headers); NSArray *cookies = [NSHTTPCookie cookiesWithResponseHeaderFields:headers forURL:url]; NSLog(@"cookieArray = %@",cookies); for (NSHTTPCookie *cookie in cookies) { if ([[cookie name] isEqualToString:@"1"]) { } }
2 删除cookie
NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage]; //获取保存的cookie NSArray *cookiesArray = [cookieStorage cookies]; //获取指定url 的cookie NSArray *urlCookies = [cookieStorage cookiesForURL:url]; for (NSHTTPCookie * cookie in cookiesArray) { [cookieStorage deleteCookie:cookie]; }
3创建cookie
//cookie的键值 NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys: @"Foo",NSHTTPCookieName, @"this is foo",NSHTTPCookieValue, @"/",NSHTTPCookiePath, url,NSHTTPCookieOriginURL, nil]; //用字典初始化cookie NSHTTPCookie *cookie = [NSHTTPCookie cookieWithProperties:dic]; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; //将cookie放入数组中 NSArray *newCookie = [NSArray arrayWithObject:cookie]; NSLog(@"old headler = %@",[request allHTTPHeaderFields]); //将cookie数组转化为字典 NSDictionary *newHeaders = [NSHTTPCookie requestHeaderFieldsWithCookies:newCookie]; //替换request头 [request setAllHTTPHeaderFields:newHeaders]; NSLog(@"new headler = %@",[request allHTTPHeaderFields]); [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
到此结束。。。。
文章内容摘自《ios网络高级编程》
相关文章推荐
- iOS在照片上添加水印
- iOS 开发的中英文入门推荐书籍都有哪些?
- IOS Xcode 插件
- iOS图形库CorePlot
- xcode语法高亮插件
- iOS7使用iOS8上的方法报错处理
- iOS开发中的测试框架
- iOS开发_常用的正则表达式
- iOS开发基础之用三种不同方式创建Table View应用
- iOS项目的完整重命名方法图文教程
- iOS证书与推送通知证书制作过程遇到的问题
- IOS中的代理模式
- iOS开发基础之用三种不同方式创建Table View应用
- 58.iOS6 7 cell适配 tableView背景
- iOS中注册功能的体验探究
- iOS 9应用开发教程之iOS 9新特性
- iOS 8设置CLLocation授权
- iOS 8应用内跳转到系统设置
- IOS 如何实现滑动返回上一页
- iOS 9之应用内搜索(CoreSpotlight)API