Alamofire GET请求无法正常工作

问题描述 投票:0回答:1

我发出了一个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从服务器获得响应,但它不是正确的数据,因为忽略了参数。但是,我从邮递员得到的回答是正确的。

ios swift get request alamofire
1个回答
1
投票

早晨柯特,

由于没有关于如何编码集合类型的已发布规范,将[]附加到数组值的键(foo [] = 1&foo [] = 2)的约定,并附加方括号包围的键用于嵌套字典值( foo [bar] = baz)[使用]。

在我看来,你应该避免在查询字符串中传递数组对象。您可以将您的请求更改为:

apiKey=1&fruit=apple

田间果实本身的存在表明应该过滤响应。

此外:

您应该考虑使用POST或PUT并通过JSON,XML或其他明确定义的格式传递值,而不是使用GET。这显然可能需要服务器端更改。

如果服务器端不受控制,则应考虑手动编码这些参数。

Source

You can find here an example手动编码。

快乐的编码!

© www.soinside.com 2019 - 2024. All rights reserved.