好文章收藏夹

详细解析几个和网络请求有关的类(十一) —— Cookies和自

2018-03-13  本文已影响24人  刀客传奇

版本记录

版本号 时间
V1.0 2018.03.13

前言

我们做APP发起网络请求,一般都是使用框架,这些框架的底层也都是苹果的API,接下来几篇就一起来看一下和网络有关的几个类。感兴趣的可以看上面几篇文章。
1. 详细解析几个和网络请求有关的类 (一) —— NSURLSession
2. 详细解析几个和网络请求有关的类(二) —— NSURLRequest和NSMutableURLRequest
3. 详细解析几个和网络请求有关的类(三) —— NSURLConnection
4. 详细解析几个和网络请求有关的类(四) —— NSURLSession和NSURLConnection的区别
5. 详细解析几个和网络请求有关的类(五) —— 关于NSURL加载系统(一)
6. 详细解析几个和网络请求有关的类(六) —— 使用NSURLSession(二)
7. 详细解析几个和网络请求有关的类(七) —— URL数据的编码和解码(三)
8. 详细解析几个和网络请求有关的类(八) —— 处理重定向和其他请求更改(四)
9. 详细解析几个和网络请求有关的类(九) —— 身份验证挑战和TLS链验证(五)
10. 详细解析几个和网络请求有关的类(十) —— 理解获取缓存(六)

回顾

上一篇主要讲述关于获取缓存方面的理解,这一篇我们主要看一下关于Cookies和自定义协议。


Cookie Storage - Cookies存储

由于HTTP协议的无状态特性,客户端通常使用cookie来提供跨URL请求的持久数据存储。 URL加载系统提供接口来创建和管理cookie,发送cookie作为HTTP请求的一部分,并在解释web服务器的响应时接收cookie。

NSHTTPCookie类封装了一个cookie,为许多常用的cookie属性提供访问器。该类还提供了将HTTP cookie标头转换为NSHTTPCookie实例并将NSHTTPCookie实例转换为适用于NSURLRequest对象的标头的方法。除非请求指定不发送cookie,否则URL加载系统会自动发送适用于NSURLRequest对象的任何存储的cookie。同样,根据当前的Cookie接受策略接受在NSURLResponse对象中返回的Cookie。

NSHTTPCookieStorage类提供了管理所有应用程序共享的NSHTTPCookie对象集合的接口。

iOS注意:Cookie不在iOS中的应用程序之间共享。

NSHTTPCookieStorage允许应用程序指定Cookie接受策略。 Cookie接受政策控制Cookie是否应始终被接受,永远不会被接受,或只能从与主文档URL相同的域接受。

注意:更改应用中的Cookie接受政策会影响所有其他正在运行的应用的Cookie接受政策。

当另一个应用程序更改cookie存储或Cookie接受策略时,NSHTTPCookieStorage会通过发布NSHTTPCookieManagerCookieChangedNotificationNSHTTPCookieStorageAcceptPolicyChangedNotification通知来通知应用程序。

有关更多信息,请参阅NSHTTPCookieStorage Class ReferenceNSHTTPCookie Class Reference


Protocol Support - 协议支持

URL加载系统设计允许客户端应用程序扩展支持传输数据的协议。 URL加载系统本身支持http,https,file,ftp和data协议。

您可以通过继承NSURLProtocol来实现自定义协议,然后使用NSURLProtocol类方法registerClass:通过URL加载系统注册新类。当NSURLSession对象为NSURLRequest对象启动连接时,URL加载系统会按照注册的相反顺序查询每个注册类。第一个为canInitWithRequest:消息返回YES的类用于处理请求。

如果您的自定义协议需要其请求或响应的附加属性,则可以通过在NSURLRequest,NSMutableURLRequest和NSURLResponse类中为这些属性提供访问器来创建类别来支持它们。NSURLProtocol类提供了在这些访问器中设置和获取属性值的方法。

URL加载系统负责在连接启动并完成时创建和释放NSURLProtocol实例。您的应用程序绝不应直接创建NSURLProtocol实例。

当一个NSURLProtocol子类由URL加载系统初始化时,它提供了一个遵循NSURLProtocolClient协议的客户端对象。 NSURLProtocol子类将消息从NSURLProtocolClient协议发送到客户端对象,以便在创建响应,接收数据,重定向到新URL,需要身份验证并完成加载时向URL加载系统通知其操作。如果自定义协议支持认证,那么它必须符合NSURLAuthenticationChallengeSender协议。

有关更多信息,请参阅 NSURLProtocol Class Reference

后记

本篇主要说明关于Cookies和自定义协议,喜欢的给点个赞和关注下。

上一篇下一篇

猜你喜欢

热点阅读