iOS 网络开发

目录

1.NSURLSession

2.身份验证和自定义TLS

3.App Transport Security

4.NSURLSession 工作流

5.后台传输及其用法

6.NSURLSession API

7.其他一些注意点

1.NSURLSession

NSURLSession相关类

  • NSURLSession
  • NSURLSessionConfiguration
  • NSURLSessionDelegate
  • NSURLSessionTask
  • NSURLSessionTaskMetrics
  • NSURLSessionTaskTransactionMetrics
iOS 网络开发_第1张图片
URLSession.png

NSURLSession分为

  • 全局共享单例session:NSURLSession sharedSession, 有一定的局限性
  • 自定义session: 自定义配置文件,设置代理,大部分时间我们都用这个
  • 后台session:也是自定义session的一种, 只是它用于专门做后台上传和下载任务

NSURLSessionConfiguration:

配置可分为

  • defaultSessionConfiguration: 系统默认
  • ephemeralSessionConfiguration�: 仅内存缓存,不做磁盘缓存的配置
  • backgroundSessionConfiguration: 这里需要指定一个identifier,identifier用来后台重连对象。(做后台上传和下载就是使用这个config)
    另外,我们还可以给configuration对象自定义一些属性,例如每端口的最大并发http请求数目,以及是否允许蜂窝网络,请求缓存策略,请求超时,cookies/证书存储等策略

NSURLSessionDelegate

iOS 网络开发_第2张图片
delegate.png

session管理的一组tasks共享一个代理,不想实现代理方法时,代理传nil即可

代理协议分为:

  • NSURLSessionDelegate:session: session-level的代理
  • NSURLSessionTaskDelegate:task-level面向all的代理
  • NSURLSessionDataDelegate:task-level 面向data和upload的代理方法
  • NSURLSessionDownloadDelegate:task-level面向download的代理
  • NSURLSessionStreamDelegate:task-level面向stream的代理方法

DownloadTask:
1.URLSession:downloadTask:didResumeAtOffset:expectedTotalBytes
2.URLSession:downloadTask:didWriteData:totalBytesWritten:totalBytesExpectedWrite
3.URLSession:downloadTask:didFinishDownloadToURL:把临时文件的URL路径给你

UploadTask:
URLSession:task:didSendBodyData:totalBytesSent:totalBytesExpectedToSend

StreamTask:
URLSession:task:needNewBodyStream:

task completion
URLSession:task:didcomplete:withError

NSURLRequest:
1.RequestMethod:
2.RequestBody
NSURLResponse:
1.statusCode
2.headerFileds

你可能感兴趣的:(iOS 网络开发)