在 post 方法中发送标头

Posted

技术标签:

【中文标题】在 post 方法中发送标头【英文标题】:Sending header in post method 【发布时间】:2017-10-04 13:20:57 【问题描述】:

我在我的 ios 应用中使用 Alamofire。我使用了 post 方法和参数,一切顺利。现在我想发送一个令牌作为标头,但我在调用中收到额外参数“方法”的错误。 我搜索了在发布请求中发送标头的方法,但只找到了我已经尝试过的方式。 我究竟做错了什么?我错过了什么吗? 这是我发送帖子请求的代码。

let urlCreate = "#########"
        Alamofire.request(urlCreate, method: .post, parameters: ["name" : adventureName, "lat" : lat, "long" : long], encoding: JSONEncoding.default, headers: ["jwtToken" : jwtToken]).responseJSON(completionHandler:  response in
            switch response.result 
            case .success:
                print(response)

            case .failure(let error):
                print(error)
                self.errorLabel.text = error as! String
            

        )

我正在使用 Swift 3、Xcode 8、Alamofire 4

我尝试过的事情:

清理项目并重新构建。

移除参数encoding: JSONEncoding.default

初始化参数如let paramters = ["name" : adventureName, "lat" : lat, "long" : long] as [String : Any]

指定方法method: HTTPMethod.post 方式但仍然得到相同的错误。

【问题讨论】:

尝试运行出错可能是编译器无法匹配签名。 【参考方案1】:
let urlCreate = "#########"
let paramters = ["name" : adventureName, "lat" : lat, "long" : long] as [String : Any]
let headers = ["jwtToken" : jwtToken] as [String : String]

        Alamofire.request(urlCreate, method: .post, parameters: paramters, encoding: JSONEncoding.default, headers: headers).responseJSON(completionHandler:  response in
            switch response.result 
            case .success:
                print(response)

            case .failure(let error):
                print(error)
                self.errorLabel.text = error as! String
            

        )

注意:JSONEncoding.default 不是强制性的,请尝试删除它。

这是类似的参考问题:Extra argument 'method' in call of Alamofire

这是 Alamofire 开发人员对同一问题和解决方案的讨论:https://github.com/Alamofire/Alamofire/issues?utf8=%E2%9C%93&q=extra%20argument

【讨论】:

PL.更新你的问题,你尝试了什么,所以我可以看到问题的原因。【参考方案2】:

我解决了这个问题。 标题应该是这样的。

let urlCreate = ######
        let paramters = ["name" : adventureName, "lat" : lat, "long" : long] as [String : Any]
        let headers: HTTPHeaders = [
            "x-access-token": jwtToken!,
            "Accept": "application/json"
        ]

我从 Alamofire 的官方文档中得到了这个东西,它对我有用。

【讨论】:

以上是关于在 post 方法中发送标头的主要内容,如果未能解决你的问题,请参考以下文章

在 json 对象参数 Volley post 中发送令牌头

使用 OPTIONS 方法未使用 http 请求 Angular 6 发送授权标头

如何在 POST 中发送 ClientId 和 ClientSecret,而不是在带有 ClientCredentialsAccessTokenProvider 的标头中发送

在 react-native 中发送请求标头/授权 axios.post

使用改造 2 在标头中发送数据执行服务

Zend_Http_Client - 为啥我的 POST 请求发送错误的内容类型标头?