iOS网络进阶

iOS网络进阶

iOS网络进阶

NSURLSession下载文件

iOS网络进阶_第1张图片
屏幕快照 2017-07-27 上午1.35.15.png

通过该方法得到的所有数据都存储在data里,这里所用到的类是NSURLSessionTask的子类NSURLSessionDataTask,当数据比较大时会消耗很大的内存。苹果给我们提供了其他类型的task(NSURLSessionDownloadTask)来简化下载的过程。

NSURLSessionDownloadTask

iOS网络进阶_第2张图片
屏幕快照 2017-07-27 上午1.44.02.png

相比较于NSURLSessionDataTask,这里给回的数据不是data而是将data写到一个临时的地址,返回的也是一个临时的文件,我们将临时文件移到目的地即可。

iOS网络进阶_第3张图片
屏幕快照 2017-07-27 上午1.47.45.png

下载进度(NSURLSessionDownloadTaskDelegate)

iOS网络进阶_第4张图片
屏幕快照 2017-07-27 上午2.17.03.png

NSURLDataTask上传

NSURLSessionDataTask

NSURLSessionUploadTask

iOS网络进阶_第5张图片
屏幕快照 2017-07-27 上午2.20.16.png

上传进度NSURLSessionTaskDelegate

iOS网络进阶_第6张图片
屏幕快照 2017-07-27 上午2.27.51.png

iOS网络进阶_第7张图片
屏幕快照 2017-07-27 上午2.28.45.png

multipart/form-data

服务器没办法很好的区分上传的数据是想保存成文件还是直接丢给他。所以就需要改种组织数据的格式。

iOS网络进阶_第8张图片
屏幕快照 2017-07-29 下午11.59.56.png

改变header里面的content-type内容,同时注意结束分隔符

iOS网络进阶_第9张图片
屏幕快照 2017-07-30 上午12.02.41.png

如果希望将上传的数据以不同的名字分别存储,可以使用如下方式

iOS网络进阶_第10张图片
屏幕快照 2017-07-30 上午1.04.15.png

示例(不要忽略换行符)

iOS网络进阶_第11张图片
屏幕快照 2017-07-30 上午1.06.40.png

MutiPart Request创建

iOS网络进阶_第12张图片
屏幕快照 2017-07-30 上午1.18.17.png

MutiPart Request发送

屏幕快照 2017-07-30 上午1.25.03.png

NSURLSessionTask总结

iOS网络进阶_第13张图片
屏幕快照 2017-07-30 上午1.25.42.png

Task状态

NSURLSessionTask控制

iOS网络进阶_第14张图片
屏幕快照 2017-07-30 上午2.21.12.png

请求的配置

  • HTTP Method GET/POST/PUT
  • 设置Header Content-Type
  • 设置HTTP Body 实际内容
  • 设置超时时间 (timeoutInterval)

设置需求

不想要对每个请求进行配置?

使用系统提供的NSURLSessionConfiguration

常见的配置

  • 超时
  • Header
  • allowsCellularAccess
  • Cookie策略
  • 缓存策略
  • 安全认证策略
iOS网络进阶_第15张图片
屏幕快照 2017-07-30 上午3.09.46.png

示例

iOS网络进阶_第16张图片
屏幕快照 2017-07-30 上午3.45.21.png

iOS网络进阶_第17张图片
屏幕快照 2017-07-30 上午3.47.00.png

NSURLSessionTask标识符-区分不同的task

taskIndentifier

总结

  • NSURLSessionDataTask
  • NSURLSessionDownloadTask
  • NSURLSessionUploadTask
  • Task State
  • NSURLSessionConfiguration

你可能感兴趣的:(iOS网络进阶)