Alamofire格式化POST / PUT参数swift

时间:2015-11-08 21:49:23

标签: swift alamofire

我在iOS上使用Alamofire时有一个问题(swift):

当我尝试使用以下参数发送请求(在.POST或.PUT中)时:

<?php

class Index extends CI_Controller
{
    function __construct()
    {
        parent::__construct();
        $this->load->helper('asset');
    }

    function index()
    {
        $this->load->view('header');
        $this->load->view('nav');
        $this->load->view('title');
        $this->load->view('stat1');
        $this->load->view('footer');
    }

}

它会产生一个像这样的httpBody:

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

我希望如此:

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

有人发现如何做到这一点?如果是这样,怎么样?

1 个答案:

答案 0 :(得分:0)

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

这是我们ParameterEncoding文档中的摘录。

  

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

为了实现这一点,您需要利用encode方法中的.URL方法中的逻辑以及queryComponents方法。您需要对queryComponents方法稍作更改,才能将数组索引放入参数值中。然后你应该好好去。