通过POST使用manager.request

我想用Alamofire SessionManager发送一个POST请求。

我阅读了https://github.com/Alamofire/Alamofire/blob/master/Documentation/Alamofire%204.0%20Migration%20Guide.md#parameter-encoding-protocol上的文档

但是我没有看到使用请求和POST的例子,只能上传。

它给出的例子:

 let parameters: Parameters = ["foo": "bar"] Alamofire.request(urlString, parameters: parameters) // Encoding => URLEncoding(destination: .methodDependent) Alamofire.request(urlString, parameters: parameters, encoding: URLEncoding(destination: .queryString)) Alamofire.request(urlString, parameters: parameters, encoding: URLEncoding(destination: .httpBody)) // Static convenience properties (we'd like to encourage everyone to use this more concise form) Alamofire.request(urlString, parameters: parameters, encoding: URLEncoding.default) Alamofire.request(urlString, parameters: parameters, encoding: URLEncoding.queryString) Alamofire.request(urlString, parameters: parameters, encoding: URLEncoding.httpBody) 

我的代码是:

manager.request(url, method: .post, parameters: parameters, encoding: .url) .responseJSON { response in fulfill(response) }

这符合方法签名(从我可以告诉),但我得到一个错误“额外的参数method:在调用。

您需要将URLRequest与您的身体参数作为Data

此代码可以帮助你

  var request = URLRequest(url: urlString!) request.httpMethod = "POST" request.setValue("application/json", forHTTPHeaderField: "Content-Type") request.httpBody = try! JSONSerialization.data(withJSONObject: parameters) manager.request(request) .responseJSON { response in fulfill(response) } 

希望这可以帮助