【问题标题】:Alamofire formatting POST/PUT parameters swiftAlamofire 快速格式化 POST/PUT 参数
【发布时间】:2017-01-02 00:48:26
【问题描述】:

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

当我尝试发送带有类似参数的请求(在 .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"

有人发现怎么做吗?如果有,怎么做?

【问题讨论】:

    标签: swift alamofire


    【解决方案1】:

    您需要使用.Custom 参数编码来执行此操作。由于没有围绕集合 URL 编码发布的 RFC 规范,Alamofire 使用适用于许多服务器的通用约定,但不是全部。

    这是来自我们ParameterEncoding 文档的 sn-p。

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

    要实现这一点,您需要利用 encode 方法中的逻辑来处理 .URL 案例以及 queryComponents 方法。您需要对queryComponents 方法稍作更改,以将数组索引放入参数值中。那你应该很高兴了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-27
      • 2016-12-12
      相关资源
      最近更新 更多