如何使用 Swift 在 iOS 应用中发送 HTTP POST 请求?
iosmobile developmentiphone/ipadswift更新于 2026/4/28 21:22:17
要在 iOS 中发送 HTTP 请求,我们将使用 DataTask 和会话。我们将创建配置、会话、URL、请求和 DataTask 对象。让我们来看看具体步骤。
首先,我们需要创建一个会话对象,使用默认配置。
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 操作。以下是完整的 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 来发布一些数据。