我发出了一个GET请求。
let parameters: Parameters = [
"filter": ["fruit": "apple"]
]
Alamofire.request(urlStr, method: .get, parameters: parameters, encoding:URLEncoding.default).responseJSON { response in
print(response.request!)
}
但是,GET请求无法正常工作。我认为参数根本不正确。这是使用以下代码print(response.request!)
打印出来的URL请求
https://api.example.com/fruits?apiKey=1&filter%5Bfruit%5D=apple
但是,使用邮递员我可以使用以下URL请求发送正确的请求并获得正确的响应。
https://api.example.com/fruits?apiKey=1&filter={"fruit":"apple"}
我不知道如何解决这个问题。我尝试了很多种编码类型,但都没有。任何提示或建议表示赞赏
编辑:我确实使用alamofire从服务器获得响应,但它不是正确的数据,因为忽略了参数。但是,我从邮递员得到的回答是正确的。
早晨柯特,
由于没有关于如何编码集合类型的已发布规范,将[]附加到数组值的键(foo [] = 1&foo [] = 2)的约定,并附加方括号包围的键用于嵌套字典值( foo [bar] = baz)[使用]。
在我看来,你应该避免在查询字符串中传递数组对象。您可以将您的请求更改为:
apiKey=1&fruit=apple
田间果实本身的存在表明应该过滤响应。
此外:
您应该考虑使用POST或PUT并通过JSON,XML或其他明确定义的格式传递值,而不是使用GET。这显然可能需要服务器端更改。
如果服务器端不受控制,则应考虑手动编码这些参数。
You can find here an example手动编码。
快乐的编码!