iOS网络进阶

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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容