在 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 的标头中发送