如何在 iOS App 中使用 Swift 发起 HTTP POST 请求?
要在 iOS 中发出 http 请求,我们要使用数据任务和会话。我们将创建配置、会话、URL、请求和数据任务对象。我们来看看将要执行的步骤。
首先,我们需要创建一个会话对象,具有默认配置。
let configuration = URLSessionConfiguration.default let session = URLSession(configuration: configuration)
然后需要创建我们需要类型的 URL 请求,它可以是 get、post、delete 或 put。在此示例中,我们看到的是“POST”类型。
let url = URL(string: URLString) //let url = NSURL(string: urlString as String) var request : URLRequest = URLRequest(url: url!) request.httpMethod = "POST" request.addValue("application/json", forHTTPHeaderField: "Content-Type") request.addValue("application/json", forHTTPHeaderField: "Accept")
一旦我们创建了请求对象,就需要使用刚刚创建的 URL 执行数据任务。我们完整的 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()
现在,我们可以将它嵌入一个函数并用在我们的代码里。
func 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 = "POST" 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 来发布一些数据。
广告