将 manager.request 与 POST 一起使用

Posted

技术标签:

【中文标题】将 manager.request 与 POST 一起使用【英文标题】:Using manager.request with POST 【发布时间】:2017-06-19 20:36:43 【问题描述】:

我想通过 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:

【问题讨论】:

自己检查这个答案***.com/questions/44484772/…也许可以帮助你,让我知道 【参考方案1】:

您需要将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)
        

希望对你有帮助

【讨论】:

您好,这对我有用,我会接受。但是我在返回这个 Promise 时遇到了问题:***.com/questions/44640197/… @quantumpotato 我对 Promise 没有任何经验,但你可以查看这个 pod 或许可以帮助你 github.com/PromiseKit/Alamofire-

以上是关于将 manager.request 与 POST 一起使用的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Spring Security @Pre 和 @Post 注释与集合一起使用

将 Wordpress Post 与 Cakephp3 集成

GET与POST类型接口

@$_POST 与 $_POST.... 有啥区别? [复制]

get请求与post,跨域

将 curl POST 与 bash 脚本函数中定义的变量一起使用