Alamofire GET请求无法正常工作

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Alamofire GET请求无法正常工作相关的知识,希望对你有一定的参考价值。

我发出了一个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。这显然可能需要服务器端更改。

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

Source

You can find here an example手动编码。

快乐的编码!

以上是关于Alamofire GET请求无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

无法通过使用 Alamofire 的参数的 GET 请求成功

调用中的额外参数“方法”。阿拉莫菲尔

Alamofire 响应与请求不匹配

Alamofire HTTPS 请求失败

AlamoFire GET api 请求未按预期工作

用 alamofire 快速发送获取请求