美文网首页
NSURLSession

NSURLSession

作者: 一代骄马 | 来源:发表于2018-04-24 10:42 被阅读5次

    iOS NSURLSession 指南 - iOS平凡之路 - SegmentFault 思否

    NSURLSession的不同

    iOS 7.0+, macOS 10.9+, tvOS 9.0+, watchOS 2.0+

    与Connection相比,Session的改善有:

    1、可单独配置每个会话的缓存、协议、cookie、证书策略、甚致跨应用共享。 2、可以在后台使用。

    NSURLSession的组成:

    1、与之前相同的组件如: NSURLRequest、NSURLCache。 2、NSURLConnection被替换为NSURLSession,NSURLSessionConfiguration,NSURLSessionTask。

    NSURLSessionTask:

    sessionTask负责加载数据。它们共享session的委托。所有的任务均可以取消、暂停、恢复。任务应该使用session创建而不是直接使用init方法。 它包括三个子类:NSURLSessionDataTask、NSURLSessionUploadTask、NSURLSessionDownloadTask。 当dataTask完成时,它具有关联的数据。downloadTask完成时,它具有一个已下载文件的临时路径。 以下是简易的使用方法:

    NSURL*URL = [NSURLURLWithString:@"http://example.com"];NSURLRequest*request = [NSURLRequestrequestWithURL:URL];NSURLSession*session = [NSURLSessionsharedSession];NSURLSessionDataTask*task = [session dataTaskWithRequest:request                                        completionHandler:    ^(NSData*data,NSURLResponse*response,NSError*error) {// ...}];[task resume];

    NSURL*URL = [NSURLURLWithString:@"http://example.com/upload"];NSURLRequest*request = [NSURLRequestrequestWithURL:URL];NSData*data = ...;NSURLSession*session = [NSURLSessionsharedSession];NSURLSessionUploadTask*uploadTask = [session uploadTaskWithRequest:request                                                            fromData:data                                                  completionHandler:    ^(NSData*data,NSURLResponse*response,NSError*error) {// ...}];[uploadTask resume];

    NSURLSessionConfiguration:

    configuration对象用于初始化session对象,定义了session如何产生请求,如访问性能、cookie、安全性、缓存策略等。 配置只在初始化的时候被读取一次,之后是不可变的。

    configuration有三个构造函数分别用于三个别同的场景。

    defaultSessionConfiguration: 这实际上与NSURLConnection的网络协议栈是一样的,它使用共享的默认网络配置。

    ephemeralSessionConfiguration: 返回一个预设的场配置,没有缓存、cookie或证书。

    backgroundSessionConfiguration: 创建一个后台会话,可以在应用程序挂起或退出的情况下运行任务。

    configuration的属性:

    HTTPAdditionalHeaders指定了默认的请求头。

    networkServiceType 对标准网络流量、网络电话、语音、视频以及一个后台进程应该使用的流量进行了区分。

    allowsCellularAccess和discretionary 用于节省通过蜂窝网络连接的带宽。建议使用后台传输的时候使用discretionary属性,因为allowCellularAccess会把 wifi和电源可用性考虑在内。

    timeoutIntervalForRequest和timeoutForResource 指定请求和资源超时时间。

    HTTPMaximumConnectionsPerHost 指定连接到特定主机的连接数量。

    HTTPCookieStorage 是被会话使用的cookie存储。默认情况下,NSHTTPCookieShorage的+ sharedHTTPCookieStorage会被使用,这与NSURLConnection是相同的。

    HTTPCookieAcceptPolicy 决定了该会话应该接受从服务器发出的cookie的条件。

    HTTPShouldSetCookies 指定了请求是否应该使用会话HTTPCookieStorage的cookie。

    URLCredentialStorage 是会话使用的证书存储。默认情况下,NSURLCredentialStorage 的+ sharedCredentialStorage 会被使用使用,这与NSURLConnection是相同的。

    TLSMaximumSupportedProtocol 和 TLSMinimumSupportedProtocol 确定是否支持SSLProtocol版本的会话。

    URLCache 是会话使用的缓存。默认情况下,NSURLCache 的+ sharedURLCache 会被使用,这与NSURLConnection是相同的。

    相关文章

      网友评论

          本文标题:NSURLSession

          本文链接:https://www.haomeiwen.com/subject/mwbdlftx.html