1、把请求头包含在NSURLRequest中,//NSURLRequest 不可变,不能动态的添加请求头信息,NSMutableURLRequest可变,动态添加请求头信息。
2、构造NSURLRequest参数:url、缓存策略、超时时间(放弃请求)
3、构造NSURLSessionTask参数:data 返回的数据、response 响应头、error 错误信息
1、url loading
NSURLSession与NSURLConnection
NSURLRequest----NSMutableURLRequest
NSURLResponse——-NSHTTPURLResponse
*获取数据到内存
*以文件形式下载数据
2、URL加载系统本身支持http,https,文件,ftp和数据协议。c
在老版本中,使用NSURLConnection去下载URL中的内容到内存中(可以写数据到disk磁盘)。
在iOS 7之后,NSURLSession更适合URL requests
&*获取数据到内存
1、简单的请求,直接使用NSURLSession从NSURL对象检索内容,无论是NSData对象还是一个磁盘文件.
2、复杂的请求,比如上传数据,使用NSURLSession或者NSURLConnection来加载一个NSURLRequest,或者其子类NSMutableURLRequest.
1、完成处理的block.当加载URL的类从服务器接收完数据后会调用这个block.
2、自定义的delegate
(----------除了数据本身,the URL loading class还提供了与请求相关的封装元数据 -------- the MIME type and content length.)
&*以文件形式下载数据
1、简单的请求,直接使用NSURLSession从NSURL对象检索内容,无论是NSData对象还是一个磁盘文件.
2、复杂的请求,使用NSURLSession加载一个NSURLRequest,或者其子类NSMutableURLRequest。
(-------------NSURLSession:即使是当应用程序当挂起,退出,闪退时,依然能在后台进行数据下载
(-------------通过NSURLDownload或者NSURLSession进行的下载是没有缓存的。
(--------------如果需要缓存下载结果,必须使用NSURLConnection或者NSURLSession,并且由开发者自己将数据写入磁盘
一个NSURLRequest对象封装了(一个URL、相应的协议信息,指定了本地缓存策略)
------NSURLConnection的超时时间
------NSURLSession的超时时间-------per-session basis
一个NSHTTPURLResponse存储了服务器返回的响应头和状态码(the headers and the status code)
Authentication and Credentials---
-- NSURLCredential 封装了包含验证信息的凭证、永久性行为
-- NSURLProtectionSpace代表了一块需要特定凭证的区域
--NSURLCredentialStorage管理凭证存储、提供NSURLCredential到相应的 NSURLProtectionSpace 的映射
-- NSURLAuthenticationChallenge用于 NSURLProtocol的子类通知系统那些凭证是需要的
---一些服务器会限制访问权限(提供相应的认证信息)Credentials
---your app可以使用Credentials去决定,是否信任服务器
cookies -------URL loading system提供相关接口去(创建、管理、发送、接收cookies)
----NSHTTPCookieStorage提供接口管理NSHTTPCookie对象的集合
cache---------存储在每一个app的 basis中
--cache由NSURLConnection根据NSURLRequest对象的cache policy 查询
-- NSURLCache 提供方法去配置cache的大小、存储位置、管理NSCachedURLResponse 对象的集合