如何阻止Alamofire编码(用%5B
和%5D
替换方括号?)
我刚才看到有人对此发表评论,但我找不到问题的链接了。我的参数如下所示:
let parameters: Parameters = [
"xx[firebase_id]" : currentUserId,
"xx[lat]" : latitude,
"xx[lng]" : longitude,
"xx[fcm_key]" : fcmKey
]
在我的参数是一个集合之前,我遇到了一个非常类似的问题,解决方案就是删除括号,如下所示:
来自:["some_array_param[]" : someCollection]
到此["some_array_param" : someCollection]
回到我的简单问题,我应该和我的后端开发人员讨论这件事吗?或者有没有办法解决这个问题(没有手动将参数放在网址中)?
答案 0 :(得分:1)
这是我通过编码参数完成它的方式:
// Remove square brackets for POST request
let parameterEncoding = ParameterEncoding.Custom { requestConvertible, parameters in
let (mutableRequest, error) = ParameterEncoding.URL.encode(requestConvertible, parameters: parameters)
let httpBody = NSString(data: mutableRequest.HTTPBody!, encoding: NSUTF8StringEncoding)!
mutableRequest.HTTPBody = httpBody.stringByReplacingOccurrencesOfString("%5B%5D=", withString: "=").dataUsingEncoding(NSUTF8StringEncoding)
return (mutableRequest, error)
}
然后将编码添加到帖子中:
Alamofire.request(.POST, "http://example.com", parameters: ["foo": ["bar1", "bar2"]], encoding: parameterEncoding)