【发布时间】:2017-11-12 13:18:21
【问题描述】:
我需要在我的项目中这样做:
如果我在 Alamofire 中手动将字符串附加到我的 URL,我可以轻松地做到这一点,但我不想那样做。我希望将参数作为 Parameter 对象。
参数的一个公共键中有多个值
我一直在做什么:
public func findCreate(tags: [String], withBlock completion: @escaping FindCreateServiceCallBack) {
/* http://baseurlsample.com/v1/categories/create_multiple?category_name[]=fff&category_name[]=sss */
let findCreateEndpoint = CoreService.Endpoint.FindMultipleCategories
let parameters: Parameters = ["category_name[]" : tags]
Alamofire.request(
findCreateEndpoint,
method: .post,
parameters: parameters,
encoding: URLEncoding(destination: .queryString),
headers: nil
).responseJSON { (response) in
print(response)
}
//....
}
如果我运行它,当前结果还可以,但发送到服务器的值有 [" "]。例如:
["chocolate"]
同样,问题是,我的整个代码的哪一部分错了?如何发送上述具有一个公共键和多个值的参数?
我也尝试将 encoding 选项添加到 Alamofire.request() 如果我添加 encoding: JSONEncoding.prettyPrinted 或 encoding: JSONEncoding.default 我得到 状态码 500。
一些有相同问题但没有确切答案的链接,我总是看到有答案的帖子,比如使用自定义编码,仅此而已。
附加信息:
这可行,但我需要发送多个字符串:
let parameters: [String : Any] = ["category_name[]" : tags.first!]
这也有效:
Alamofire.request("http://baseurlsample.com/v1/categories/create_multiple?category_name[]=fff&category_name[]=sss", method: .post).responseJSON { (data) in
print(data)
}
【问题讨论】: