使用 Alamofire 请求方法在 POST 的请求正文中发送 JSON 对象数组

Posted

技术标签:

【中文标题】使用 Alamofire 请求方法在 POST 的请求正文中发送 JSON 对象数组【英文标题】:Send an array of JSON objects in the request body of a POST using the Alamofire request method 【发布时间】:2015-10-28 14:08:49 【问题描述】:

我有一个 JSON 对象数组,我想将它们传递到我们服务器的 POST 请求的请求正文中。但是,请求方法的方法签名仅将字典作为其参数:

func request(method: Alamofire.Method, _ URLString: URLStringConvertible, parameters: [String : AnyObject]? = default, encoding: Alamofire.ParameterEncoding = default, headers: [String : String]? = default) -> Alamofire.Request

目前有没有办法在 Alamofire 中执行此操作而无需自己创建 NSURLRequest?还是在未来的发展计划中?

【问题讨论】:

【参考方案1】:

您需要使用.Custom 参数编码来执行此操作,或者您自己手动创建NSURLRequest。另一种可能的选择是修改服务器以接受 JSON 中带有参数名称的数组。

截至目前,尚无计划支持此功能,但感谢您让我们了解此限制。我已将此问题添加到我们的内部 Trello 看板,我们将讨论我们是否愿意在未来支持此问题。

【讨论】:

你能解释一下为什么没有计划支持这个功能吗?数组作为 JSON 请求的***元素是完全有效的。 明确地说,我们已将它添加到我们的积压工作中,所以这并不意味着它永远不会被支持。它在我们的优先级列表中并不是很高。主要原因是它不太适合其他编码类型。虽然它对 JSON 完全有效,但它不适用于属性列表,并且在查询字符串或 HTTP 正文中的 URL 编码中没有得到很好的定义。 是的,我现在明白了,在我自己使用 .Custom 编码实现它之后,我可以明白为什么它没有完成。谢谢。 @AndrewJackman 您能否提供示例代码?我正在努力解决,谢谢

以上是关于使用 Alamofire 请求方法在 POST 的请求正文中发送 JSON 对象数组的主要内容,如果未能解决你的问题,请参考以下文章

在 Alamofire Post 请求之后如何有一个完成处理程序/块?

POST 请求在 swift3 中无法使用 alamofire

带有标头的 Alamofire POST 请求

POST 请求 Swift 3.0 Alamofire

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

使用 Alamofire 3.0+ 在 swift 2.2 中使用 JSON 对象发送 POST 请求