Alamofire:使用url,方法,参数,标头和编码编写POST请求的语法

时间:2017-06-22 15:19:30

标签: ios swift alamofire

我已经查看了之前的大量答案,但无法找到包含以下所有参数的最新答案:网址,方法,参数,编码,标题。

此:

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

给出错误:额外参数"方法"在电话中

更新26/06/2017

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

2 个答案:

答案 0 :(得分:2)

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)

答案 1 :(得分:1)

最简单的方法是创建一个特定的请求,然后使用Request方法和属性

对其进行自定义
var request = URLRequest(url: yourUrl)
request.httpMethod = yourMethod 
request.setValue(yourCustomizedValue)
request.httpBody = yourBody
...

Alamofire.request(request).responseJSON {...}