通过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) }
希望这可以帮助