在上一篇教程中,我们介绍了 UIKit
框架中常用的 UI 组件,为开发者提供了创建优秀用户界面的基础知识。本篇教程将深入探讨 URLSession
,这是一种处理网络请求的强大工具,它帮助我们与网络进行交互,获取数据并实现应用的联网功能。接下来,我们将通过案例来具体说明如何使用 URLSession
发起网络请求。
什么是 URLSession? URLSession
是 Foundation
框架中的一个类,旨在提供 API 以便轻松地发送和接收 HTTP 请求。它负责管理所有与 URL 相关的请求,包括下载、上传以及缓存等功能。
使用 URLSession 发送 GET 请求 让我们首先从一个简单的 GET 请求开始。假设我们想要请求一个公共 API,例如获取用户的信息。
示例代码 下面的代码展示了如何使用 URLSession
发送 GET 请求并处理响应:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 import Foundationfunc fetchUserData () { guard let url = URL (string: "https://jsonplaceholder.typicode.com/users/1" ) else { print ("无效的 URL" ) return } let session = URLSession .shared let task = session.dataTask(with: url) { data, response, error in if let error = error { print ("请求错误: \(error.localizedDescription) " ) return } guard let data = data else { print ("没有返回数据" ) return } if let dataString = String (data: data, encoding: .utf8) { print ("返回的数据: \(dataString) " ) } } task.resume() } fetchUserData()
代码解析
创建 URL : 首先,我们需要一个有效的 URL。此示例中,我们请求的是 JSONPlaceholder
的用户数据 API。
创建 URLSession 实例 : 使用 URLSession.shared
创建一个共享的 URLSession
实例。
创建数据任务 : 使用 dataTask(with:completionHandler:)
方法创建一个数据任务。该任务会异步请求指定的 URL。
处理响应 : 在完成处理程序中,我们检查是否有错误并确保我们收到了数据。随后,我们将数据转换为字符串并打印出来。
启动任务 : 记得调用 task.resume()
来启动网络请求。
发送 POST 请求 除了 GET 请求,URLSession
还可以发送 POST 请求,我们来看看如何实现这个功能。
示例代码 下面的代码展示了如何使用 URLSession
发送 POST 请求,向服务器提交数据:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 import Foundationfunc postData () { guard let url = URL (string: "https://jsonplaceholder.typicode.com/posts" ) else { print ("无效的 URL" ) return } var request = URLRequest (url: url) request.httpMethod = "POST" request.setValue("application/json" , forHTTPHeaderField: "Content-Type" ) let parameters: [String : Any ] = [ "title" : "foo" , "body" : "bar" , "userId" : 1 ] guard let jsonData = try? JSONSerialization .data(withJSONObject: parameters) else { print ("参数编码错误" ) return } request.httpBody = jsonData let session = URLSession .shared let task = session.dataTask(with: request) { data, response, error in if let error = error { print ("请求错误: \(error.localizedDescription) " ) return } guard let data = data else { print ("没有返回数据" ) return } if let dataString = String (data: data, encoding: .utf8) { print ("返回的数据: \(dataString) " ) } } task.resume() } postData()
代码解析
创建请求 : 使用 URLRequest
创建一个请求对象,并设置请求的 HTTP 方法为 POST
。
设置请求头 : 指定 Content-Type
为 application/json
,这表明我们将发送 JSON 格式的数据。
准备数据 : 创建一个字典来存储我们要发送的参数,然后使用 JSONSerialization
将其转换为 JSON 数据。
发送请求 : 创建数据任务并在完成处理程序中处理响应,和 GET 请求相似。
总结 在本篇教程中,我们详细介绍了如何使用 URLSession
发起 GET 和 POST 类型的网络请求。通过这些基础知识,你应该能够在你的 iOS 应用中轻松地与 RESTful API 进行交互。在下一篇教程中,我们将深入探讨如何解析 JSON 数据,以便从 API 中提取有用的信息,继续我们的学习之旅。