POST 请求未在 Swift 中发送



我只是想问一下。为什么我的 POST 请求在下面没有发送?代码看起来非常合理,Xcode 没有显示任何错误。我正在使用 Swift 3。你能帮帮我吗?谢谢!我的代码在下面,我的帖子URL在这里。再次感谢!

@IBAction func onClick(_ sender: Any) {
let username = Username.text
let password = Password.text
let request = NSMutableURLRequest(url: url)
request.httpMethod = "POST"
let params = ["username": username, "password": password] as Dictionary<String, AnyObject>
do {
try request.httpBody = JSONSerialization.data(withJSONObject: params, options: .prettyPrinted)
} catch {
print("Error")
}
request.addValue("application/JSON", forHTTPHeaderField: "Content-Type")
URLSession.shared.getAllTasks { (openTasks: [URLSessionTask]) in
NSLog("open tasks: (openTasks)")
}

}

您需要使用:

let task = session.dataTaskWithRequest(urlRequest, completionHandler: { (data, response, error) in
// do stuff with response, data & error here
print(error)
print(response)
})
task.resume()

在此处获取更多信息

你必须使用URLSession.shared.dataTask(with:completionHandler:).另外,不要使用NSMutableRequest,而是使用原生 Swift 版本,URLRequest

@IBAction func onClick(_ sender: Any) {
let username = Username.text
let password = Password.text
var request = URLRequest(url: url)
request.httpMethod = "POST"
let params = ["username": username, "password": password] as Dictionary<String, AnyObject>
do {
try request.httpBody = JSONSerialization.data(withJSONObject: params, options: .prettyPrinted)
} catch {
print("Error")
}
request.addValue("application/JSON", forHTTPHeaderField: "Content-Type")
URLSession.shared.dataTask(with: request, completionHandler: { data,response, error in
if let existingError = error {
//handle error
}
//handle response and/or data
}).resume()
}

最新更新