如何在 iOS 应用中使用 Swift 发起 HTTP 请求?
在 iOS 中发起 HTTP 请求,我们将使用 DataTask 和 session。我们将创建配置、会话、URL、请求和 dataTask 对象。让我们看看我们将要经历的步骤。
HTTP 请求可以有多种类型,这取决于我们想要向服务器发出何种请求。以下是基本类型的请求。
“GET”、“POST”、“PUT”、“DELETE”,我们可以根据我们的 API 使用其中任何一个。每种请求的基本原理都相同,如下所示。让我们用 DELETE 类型的请求来查看这些示例。
首先,我们需要创建一个具有默认配置的会话对象。
let configuration = URLSessionConfiguration.default let session = URLSession(configuration: configuration)
然后,我们需要创建一个我们需要的类型的 URL 请求,它可以是 get、post、delete 或 put。在本例中,我们看到的是“Delete”类型。
let url = URL(string: URLString) //let url = NSURL(string: urlString as String) var request : URLRequest = URLRequest(url: url!) request.httpMethod = "DELETE" request.addValue("application/json", forHTTPHeaderField: "Content-Type") request.addValue("application/json", forHTTPHeaderField: "Accept")
创建请求对象后,我们需要使用上面创建的 URL 执行 dataTask。这就是我们现在完整的 dataTask 方法应该是什么样子。
let dataTask = session.dataTask(with: url!) { data,response,error in guard let httpResponse = response as? HTTPURLResponse, let receivedData = data else { print("error: not a valid http response") return } switch (httpResponse.statusCode) { case 200: //success response. break case 400: break default: break } } dataTask.resume()
现在,我们可以将其嵌入到一个函数中并在我们的代码中使用它。
hitAPI(_for URLString:String) { let configuration = URLSessionConfiguration.default let session = URLSession(configuration: configuration) let url = URL(string: URLString) //let url = NSURL(string: urlString as String) var request : URLRequest = URLRequest(url: url!) request.httpMethod = "DELETE" request.addValue("application/json", forHTTPHeaderField: "Content-Type") request.addValue("application/json", forHTTPHeaderField: "Accept") let dataTask = session.dataTask(with: url!) { data,response,error in // 1: Check HTTP Response for successful GET request guard let httpResponse = response as? HTTPURLResponse, let receivedData = data else { print("error: not a valid http response") return } switch (httpResponse.statusCode) { case 200: //success response. break case 400: break default: break } } dataTask.resume() }
注意:您可能需要在 info.plist 文件中允许传输安全异常才能访问某些 API。
此示例没有显示输出,因为需要 API 来删除某些数据。
广告