Swift 2 - POST 请求没有添加参数

Posted

技术标签:

【中文标题】Swift 2 - POST 请求没有添加参数【英文标题】:Swift 2 - POST requests don't get parameters added 【发布时间】:2015-08-28 21:41:48 【问题描述】:

跟进有人在 Alamofire github 问题上提出的问题,该问题从未得到回答,因为我也想要答案。

用 GET 做一个简单的请求很好地添加了我的参数,但是做一个 POST 没有。

let parameters = ["foo": "bar"]

Alamofire.request(.POST, "url", parameters: parameters)
.responseJSON  request, response, json, error in
  print("request: \(request)")

返回

request: Optional(<NSMutableURLRequest: 0x7f9864109cb0>  URL: https://api.github.com/repos/BasThomas/junk/issues )
 while

let parameters = ["foo": "bar"]

Alamofire.request(.GET, "url", parameters: parameters)
.responseJSON  request, response, json, error in
  print("request: \(request)")

返回

request: Optional(<NSMutableURLRequest: 0x7f9ef07ef0f0>  URL: https://api.github.com/repos/BasThomas/junk/issues?foo=bar )

【问题讨论】:

【参考方案1】:

POST 的参数被添加到请求正文,而不是 URL。这是由于 GET 和 POST 之间的通用约定。

自定义参数编码

如果您需要将它们附加到 URL(听起来像您这样做),那么我建议您查看 .Custom ParameterEncoding 类型。这将允许您遵循与 encode 方法相同的逻辑,但可以随意附加参数。

此外,ParameterEncoding 枚举中的方法现已全部公开,因此您可以访问查询参数拆分和转义。

【讨论】:

以上是关于Swift 2 - POST 请求没有添加参数的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 swift 2.0 制作 http post json 请求参数

Swift 3:Alamofire POST 请求参数问题

iOS Swift moya框架发送数组作为请求参数(GET/POST)

带有 Swift 3 的 Alamofire 4.3,POST 请求不适用于 URL 参数

如何在 Swift 3 中使用 Alamofire 在 POST 请求中将给定的 JSON 作为参数发送?

如何在 Alamofire 4.0 中仅使用参数和正文在 swift 中使用 POST 方法发送请求?