如何在 Alamofire 中为 GET 方法发送自定义参数?

Posted

技术标签:

【中文标题】如何在 Alamofire 中为 GET 方法发送自定义参数?【英文标题】:How to send custom parameters for a GET method in Alamofire? 【发布时间】:2017-09-08 09:38:54 【问题描述】:

我有这个array = [1,2,3],我想这样发送:

http://somedomain.com/today?intersets=1,2,3

我正在尝试这样发送:

let params: Parameters = [ "intersets": array]

Alamofire.request(url, method: .get, parameters: params ,headers: header)

但是在打印response.request 之后,我得到了这个:

http://somedomain.com/today?intersets%5B%5D=1&intersets%5B%5D=2intersets%5B%5D=3

关于如何解决此请求的任何想法?

【问题讨论】:

请注意,if 您的服务器实际上需要一个数组并再次解析逗号,然后使用您当前的方法实际上更正确,因为这就是您通过 GET 传输数组的方式。 @luk2302 谢谢老兄,当然,你提到这是 GET 中的方式,那么它在 POST 中会改变吗? 在 POST 正文中,您主要发送对数组具有原生支持的 json,因此不需要任何字符串操作。我之前的意思是“在 URL 参数中”,这是在 GET 中放置参数的唯一位置。 【参考方案1】:

您应该将数组加入String 并将其作为参数发送。

let string = array.joined(separator: ",")
let params: Parameters = [ "intersets": string]

【讨论】:

我收到了这个blahblahblah/today?intersets=1%2C2%2C3,如何从, 中删除%2C 并将其替换为, 您不能直接发送,作为参数,如在URL中,您应该编码特殊字符。 %2C, 的编码形式。

以上是关于如何在 Alamofire 中为 GET 方法发送自定义参数?的主要内容,如果未能解决你的问题,请参考以下文章

在 AXIOS 中为 GET 方法发送请求正文会引发错误

如何从 API 发送错误

如何在同一函数中为 2 个 Alamofire 请求只有 1 个完成处理程序

如何在 Swift 中使用 Alamofire 将参数作为正文发送到 PUT 方法

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

使用 SwiftyJSON 对 Alamofire GET 参数进行 URL 编码