资讯专栏INFORMATION COLUMN

iOS NSURLSession 指南

Xufc / 3196人阅读

摘要:实际上指的是中的一套组件,包括以及。对象负责发送一个请求,建立与服务器的链接并收集来自服务器的数据。所有的任务均可以取消暂停恢复。返回一个预设的场配置,没有缓存或证书。指定连接到特定主机的连接数量。决定了该会话应该接受从服务器发出的的条件。

与NSURLConnection比较。

1、NSURLConnection实际上指的是Foundation中的一套组件,包括:NSURLRequest, NSURLResponse, NSURLProtocol, NSURLCache, NSHTTPCookie, NSURLCredentialStorage, 以及NSURLConnection。 2、NSURLRequest封装了一个实际的请求,保存发送给服务器的所有数据,包括URL,请求头,方法等。 Connection对象负责发送一个request请求,建立与服务器的链接并收集来自服务器的数据。 3、请求被发送前,先访问共享的缓存,然后服务器可以发出验证,然后通过共享的cookie,证书或连接委托自动处理。

以上是NSURLConnection的一些概览。

NSURLSession的不同

与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 = [NSURL URLWithString:@"http://example.com"];
NSURLRequest *request = [NSURLRequest requestWithURL:URL];
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *task = [session dataTaskWithRequest:request
                                        completionHandler:
    ^(NSData *data, NSURLResponse *response, NSError *error) {
        // ...
    }];
[task resume];
NSURL *URL = [NSURL URLWithString:@"http://example.com/upload"];
NSURLRequest *request = [NSURLRequest requestWithURL:URL];
NSData *data = ...;
NSURLSession *session = [NSURLSession sharedSession];
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是相同的。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/16321.html

相关文章

  • NSURLCache 网络请求缓存指南

    摘要:是系统用于实现网络缓存的一个组件,被放于这一个功能组件中。对于我们常见的协议来说,这个策略根据请求的头来执行缓存策略。这个选项只读缓存,无论何时都不会进行网络请求。另外返回则会阻止缓存行为。否则响应完整的消息内容。 为什么要理解NSURLCache? 在iOS app的开发过程中,网络数据的缓存一直来说都是一件常见,但又繁琐的任务,经常会有各种老大们提出这样那样的缓存要求。 一般而言...

    BenCHou 评论0 收藏0
  • 慕课网_《iOS基础教程-网络操作》学习总结

    时间:2017年05月23日星期二说明:本文部分内容均来自慕课网。@慕课网:http://www.imooc.com教学示例源码:无个人学习源码:https://github.com/zccodere/s... 第一章:学习指南 1-1 学习指南 学习内容 HTTP简介 HTTP作用 获取一段网络数据:get请求 更新一段网络数据:post请求 使用UIWebView加载网页 总结 HTTP的起源...

    BlackMass 评论0 收藏0
  • weex-iOS实战

    摘要:前言学习也有一段时间了,关于在三端的使用,我们也做了实战开发,渲染时间在之间,各平台体验相比都有极大的提升,此文章在的角度记录开发过程中遇到的一些问题,如果想要了解前端和安卓的开发可以参考我同事写的一些内容实践前端视角实践安卓视角准备工作 前言 weex学习也有一段时间了,关于weex在三端的使用,我们也做了实战开发,渲染时间在100-300ms之间,各平台体验相比H5都有极大的提升,...

    roundstones 评论0 收藏0
  • AFNetworking 概述(一)

    摘要:是如今开发中不可缺少的组件之一。概述我们今天是来深入研究一下这个与我们日常开发密切相关的框架是如何实现的。关于其他源代码分析的其他文章概述一的核心二处理请求和响应三监控网络状态四验证请求的证书五关注仓库,及时获得更新 showImg(https://segmentfault.com/img/remote/1460000006767665); Blog: Draveness 关注仓库,...

    Rocko 评论0 收藏0
  • AFNetworking 概述(一)

    摘要:是如今开发中不可缺少的组件之一。概述我们今天是来深入研究一下这个与我们日常开发密切相关的框架是如何实现的。关于其他源代码分析的其他文章概述一的核心二处理请求和响应三监控网络状态四验证请求的证书五关注仓库,及时获得更新 showImg(https://segmentfault.com/img/remote/1460000006767665); Blog: Draveness 关注仓库,...

    wangjuntytl 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<