【问题标题】:Alamofire: syntax for writing a POST request with url, method, parameters, headers and encodingAlamofire:使用 url、方法、参数、标头和编码编写 POST 请求的语法
【发布时间】:2017-06-22 15:19:30
【问题描述】:

我查看了大量以前的答案,但找不到包含以下所有参数的最新答案:url、方法、参数、编码、标头。

这个:

Alamofire.request(url, method: .post, parameters: params, encoding: JSONEncoding.default, headers: headers).responseJSON { ... }

给出错误:调用中的额外参数“方法”


2017 年 6 月 26 日更新

请求的格式实际上是正确的,问题是发送的一个参数的格式不正确。该错误非常具有误导性。有关所需参数类型及其默认值的列表,请参阅下面的答案。

【问题讨论】:

标签: ios swift alamofire


【解决方案1】:

Cristallo 的回答是一种很棒的自定义方式。

与此同时,我发现我原来的问题中的请求确实有效,条件是传递给参数标头的值是 [String: String] 类型。

Alamofire 的错误有点误导:

Extra argument 'method' in call.

因此,这是可以使用的请求:

Alamofire.request(
        url,
        method: .post,
        parameters: params,
        encoding: JSONEncoding.default,
        headers: httpHeaders).responseJSON { response in
        ...
    }

使用预期的参数类型及其默认值(取自 Alamofire 源代码):

Alamofire.request(
    _ url: URLConvertible,
    method: HTTPMethod = .get,
    parameters: Parameters? = nil,
    encoding: ParameterEncoding = URLEncoding.default,
    headers: HTTPHeaders? = nil)

【讨论】:

    【解决方案2】:

    最简单的方法是创建一个特定的请求,然后使用请求方法和属性对其进行自定义

    var request = URLRequest(url: yourUrl)
    request.httpMethod = yourMethod 
    request.setValue(yourCustomizedValue)
    request.httpBody = yourBody
    ...
    
    Alamofire.request(request).responseJSON {...} 
    

    【讨论】:

    • 感谢 cristallo,帮助很大。实际上,我的问题中的请求实际上是正确的。请参阅下面的答案。
    • 您将如何向此示例添加参数?
    猜你喜欢
    • 2017-02-13
    • 2016-02-23
    • 1970-01-01
    • 2017-03-02
    • 2016-04-09
    • 2019-06-27
    • 1970-01-01
    • 2018-11-10
    相关资源
    最近更新 更多