iOS 开发者必须掌握的 URLSession 使用指南
URLSession 是 Apple 提供的用于处理 HTTP/HTTPS 请求的 API。它支持多种网络任务,包括:
+ 数据任务(Data tasks):发送和接收数据,如 GET 或 POST 请求。
+ 下载任务(Download tasks):下载文件。
+ 上传任务(Upload tasks):上传文件。
+ 流任务(Stream tasks):处理流数据。
URLSession 提供了同步和异步两种方式来处理网络请求,并支持后台传输、取消和恢复传输等高级功能。
URLSession 实例有两种方法:
+ URLSession.shared:大多数情况直接使用这个共享的单例就行了。
+ URLSession(configuration: URLSessionConfiguration):自定义配置的 URLSession,如果你有特殊需求,可以使用这个方法创建一个新的 URLSession。
URLSessionConfiguration 是 URLSession 的配置类,用于配置 URLSession 的行为,比如超时时间、缓存策略、代理设置等等。
Data tasks 是 URLSession 的一种任务类型,用于发送和接收数据。我们可以通过 URLSession 的 dataTask(with:completionHandler:) 方法创建一个请求任务,然后通过 resume() 方法启动任务。
Upload tasks 是 URLSession 的另一种任务类型,可以轻松用它来上传文件。
我们可以通过 URLSession 的 uploadTask(with:from:completionHandler:) 方法创建一个上传任务,然后通过 resume() 方法启动任务。
Download tasks 是 URLSession 用它来下载文件的,当你要下载一个文件时可以使用,它允许你将文件下载并保存到本地。
我们可以通过 URLSession 的 downloadTask(with:completionHandler:) 方法创建一个下载任务,然后通过 resume() 方法启动任务。
会话是 URLSession 的核心,它负责处理所有的网络请求,除了上边用到的以下方法。
以下是一些会话常用的方法:
+ invalidateAndCancel():取消所有任务并使会话无效。
+ finishTasksAndInvalidate():等待所有任务完成后使会话无效。
+ getAllTasks(completionHandler:):获取所有任务。
+ flush(completionHandler:):清空缓存。
+ reset(completionHandler:):重置整个会话。
每个任务都有自己的生命周期,URLSession 提供了一些方法来管理任务的生命周期:
+ resume():启动任务,上边的代码中都有用到。
+ suspend():暂停任务,暂停后可以通过 resume() 方法重新启动。
+ cancel():取消任务,取消后无法恢复,比如当用户离开这个页面的时候,可以把当前页面的网络请求取消,避免资源浪费。
我的笔记