Alamofire:这种语法有啥问题? “通话中的额外参数”

Posted

技术标签:

【中文标题】Alamofire:这种语法有啥问题? “通话中的额外参数”【英文标题】:Alamofire: What is wrong with this syntax? "Extra argument in call"Alamofire:这种语法有什么问题? “通话中的额外参数” 【发布时间】:2018-03-02 14:53:36 【问题描述】:

我在 Swift 中使用 Alamofire 进行联网。

我需要将数据作为 httpbody 发布到 url。

这是我的代码:

let parameters = ["username": "Admin", "password": "somepassword", "client_id": "Example", "grant_type": "password", "refresh_token": "string"];

    Alamofire.request(.POST, "https://XXXXXXXXXXXX", parameters:  parameters, encoding: .JSON(options: nil)).responseJSON  response in
        print("Request: \(String(describing: response.request))")   // original url request
        print("Response: \(String(describing: response.response))") // http url response
        print("Result: \(response.result)")                         // response serialization result

        if let json = response.result.value 
            print("JSON: \(json)") // serialized json response
        
        if let data = response.data, let utf8Text = String(data: data, encoding: .utf8) 
            print("Data: \(utf8Text)") // original server data as UTF8 string
        
    

这不会编译,而是我得到“调用中的额外参数”

怎么了?

感谢您的帮助。

【问题讨论】:

你用的是什么版本的alamofire? 我用的是4.2.0版 据我了解,“参数”将是 httpbody? 将编码改为encoding: JSONEncoding.default 【参考方案1】:

如果您使用的是 4+ 版本的 Alamofire,则创建请求的语法不同(请参阅 migration guide):

Alamofire.request("https://XXXXXXXXXXXX", 
                  method: .post,
                  parameters: parameters,
                  encoding: JSONEncoding.default) .responseJSON  response in
    // TODO: rest

【讨论】:

以上是关于Alamofire:这种语法有啥问题? “通话中的额外参数”的主要内容,如果未能解决你的问题,请参考以下文章

Alamofire 请求收到错误“调用中的额外参数”

三元运算符;这种语法有啥问题?

这种奇怪的 C++ 语法有啥作用? [复制]

Alamofire 的 .responseString 方法有啥用?

Swift - 闭包表达式语法

Alamofire 自定义响应从 Alamofire v1.3 迁移到 3.0(和 Swift 2 语法)