iOS网络进阶
iOS网络进阶
NSURLSession下载文件
屏幕快照 2017-07-27 上午1.35.15.png
通过该方法得到的所有数据都存储在data里,这里所用到的类是NSURLSessionTask的子类NSURLSessionDataTask,当数据比较大时会消耗很大的内存。苹果给我们提供了其他类型的task(NSURLSessionDownloadTask)来简化下载的过程。
NSURLSessionDownloadTask
屏幕快照 2017-07-27 上午1.44.02.png
相比较于NSURLSessionDataTask,这里给回的数据不是data而是将data写到一个临时的地址,返回的也是一个临时的文件,我们将临时文件移到目的地即可。
屏幕快照 2017-07-27 上午1.47.45.png
下载进度(NSURLSessionDownloadTaskDelegate)
屏幕快照 2017-07-27 上午2.17.03.png
NSURLDataTask上传
NSURLSessionDataTask

NSURLSessionUploadTask
屏幕快照 2017-07-27 上午2.20.16.png
上传进度NSURLSessionTaskDelegate
屏幕快照 2017-07-27 上午2.27.51.png
屏幕快照 2017-07-27 上午2.28.45.png
multipart/form-data
服务器没办法很好的区分上传的数据是想保存成文件还是直接丢给他。所以就需要改种组织数据的格式。
屏幕快照 2017-07-29 下午11.59.56.png
改变header里面的content-type内容,同时注意结束分隔符
屏幕快照 2017-07-30 上午12.02.41.png
如果希望将上传的数据以不同的名字分别存储,可以使用如下方式
屏幕快照 2017-07-30 上午1.04.15.png
示例(不要忽略换行符)
屏幕快照 2017-07-30 上午1.06.40.png
MutiPart Request创建
屏幕快照 2017-07-30 上午1.18.17.png
MutiPart Request发送
屏幕快照 2017-07-30 上午1.25.03.png
NSURLSessionTask总结
屏幕快照 2017-07-30 上午1.25.42.png
Task状态
NSURLSessionTask控制
屏幕快照 2017-07-30 上午2.21.12.png
请求的配置
- HTTP Method GET/POST/PUT
- 设置Header Content-Type
- 设置HTTP Body 实际内容
- 设置超时时间 (timeoutInterval)
设置需求
不想要对每个请求进行配置?
使用系统提供的NSURLSessionConfiguration
常见的配置
- 超时
- Header
- allowsCellularAccess
- Cookie策略
- 缓存策略
- 安全认证策略
屏幕快照 2017-07-30 上午3.09.46.png
示例
屏幕快照 2017-07-30 上午3.45.21.png
屏幕快照 2017-07-30 上午3.47.00.png
NSURLSessionTask标识符-区分不同的task
taskIndentifier
总结
- NSURLSessionDataTask
- NSURLSessionDownloadTask
- NSURLSessionUploadTask
- Task State
- NSURLSessionConfiguration