#iOS网络进阶
iOS网络进阶
NSURLSession下载文件
通过该方法得到的所有数据都存储在data里,这里所用到的类是NSURLSessionTask的子类NSURLSessionDataTask,当数据比较大时会消耗很大的内存。苹果给我们提供了其他类型的task(NSURLSessionDownloadTask)来简化下载的过程。
NSURLSessionDownloadTask
相比较于NSURLSessionDataTask,这里给回的数据不是data而是将data写到一个临时的地址,返回的也是一个临时的文件,我们将临时文件移到目的地即可。
下载进度(NSURLSessionDownloadTaskDelegate)
NSURLDataTask上传
NSURLSessionDataTask
NSURLSessionUploadTask
上传进度NSURLSessionTaskDelegate
multipart/form-data
服务器没办法很好的区分上传的数据是想保存成文件还是直接丢给他。所以就需要改种组织数据的格式。
改变header里面的content-type内容,同时注意结束分隔符
如果希望将上传的数据以不同的名字分别存储,可以使用如下方式
示例(不要忽略换行符)
MutiPart Request创建
MutiPart Request发送
NSURLSessionTask总结
Task状态
NSURLSessionTask控制
请求的配置
- HTTP Method GET/POST/PUT
- 设置Header Content-Type
- 设置HTTP Body 实际内容
- 设置超时时间 (timeoutInterval)
设置需求
不想要对每个请求进行配置?
使用系统提供的NSURLSessionConfiguration
常见的配置
- 超时
- Header
- allowsCellularAccess
- Cookie策略
- 缓存策略
- 安全认证策略
示例
NSURLSessionTask标识符-区分不同的task
taskIndentifier
复制代码
总结
- NSURLSessionDataTask
- NSURLSessionDownloadTask
- NSURLSessionUploadTask
- Task State
- NSURLSessionConfiguration