前言
Swift3.0把之前带NS前缀的类都改成Swift风格了,像常用的NSURLSession变成URLSession
目录
处理网络请求的几个关键类
URLSession
URLSession是用来处理基于HTTP/HTTPS请求的类
URLSession是一个可以响应发送或者接受HTTP请求的关键类,可以通过URLSessionConfiguration类新建URLSession实例。有以下三种方式:
URLSessionConfiguration.default
默认configuration实例创建方式,使用硬盘上持久化全局缓存、证书(credential)和cookie的存储对象URLSessionConfiguration.ephemeral
唯一跟默认configuration不一样的是所以与会话(session)相关的数据都存储在内存中URLSessionConfiguration.background(withIdentifier: "ConfigurationID")
让会话在后台执行上载或下载任务。即使应用程序本身被暂停或终止,传输仍将继续
URLSessionConfiguration
URLSessionConfiguration可以配置会话(session)属性像timeout、HTTP header、缓存策略。
URLSessionTask
URLSessionTask是一个表示任务对象的抽象类,一个会话创建一个任务,这里任务是指获取数据、下载或上传文件。
有三种类型的会话
- URLSessionDataTask: 处理从HTTP get请求中从服务器获取数据到内存中。
- URLSessionUploadTask:上传硬盘中的文件到服务器,一般是HTTP POST 或 PUT方式
- URLSessionDownloadTask: 从远程服务器下载文件到临时文件位置。
还可以暂停、恢复和取消任务(tasks),此外URLSessionDownloadTask还支持在未来某一时刻恢复暂停的下载。
通常URLSession有两种返回数据的方式:1.无论执行任务成功还是失败都会通过completion handler block来处理。2.通过在会话创建时设置的委托调用方法