Alamofire格式化POST/PUT参数swift



我在iOS上使用Alamofire时遇到问题(swift):

当我尝试发送一个带有以下参数的请求(在.POST或.PUT中)时:

parameters:["description": WhoGives, "images": (
    {
    container = offerImages;
    name = "563f993e4b00ddad7ed42790_0.jpg";
},
    {
    container = offerImages;
    name = "563f993e4b00ddad7ed42790_1.jpg";
}
)]

它会产生一个httpBody,如下所示:

description="WhoGives"&images[][container]=“offerImages”&images[][name]=“563f993e4b00ddad7ed42790_0.jpg”&images[][container]=“ offerImages”&images[][name]=“563f993e4b00ddad7ed42790_1.jpg"

我希望它是:

description="WhoGives"&images[0][container]=“offerImages”&images[0][name]=“563f993e4b00ddad7ed42790_0.jpg”&images[1][container]=“ offerImages”&images[1][name]=“563f993e4b00ddad7ed42790_1.jpg"

正如有人发现的那样?如果是,怎么做?

您需要使用.Custom参数编码来完成此操作。由于没有发布关于集合URL编码的RFC规范,Alamofire使用了一个通用约定,该约定适用于许多服务器,但并非所有服务器。

以下是我们的ParameterEncoding文档中的一个片段。

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

要实现这一点,您需要将encode方法中的逻辑与queryComponents方法一起用于.URL情况。您需要稍微更改queryComponents方法,以便将数组索引放入参数值中。那你应该可以走了。

相关内容

  • 没有找到相关文章

最新更新