我在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"
有人发现如何做到这一点?如果是这样,怎么样?
答案 0 :(得分:0)
您需要使用.Custom
参数编码才能执行此操作。由于没有围绕集合URL编码发布RFC规范,Alamofire使用了一个适用于许多服务器的通用约定,但不是全部。
这是我们ParameterEncoding
文档中的摘录。
由于没有关于如何编码集合类型的已发布规范,因此将
[]
附加到数组值的键(foo[]=1&foo[]=2
),并为嵌套字典附加方括号括起来的键的约定值(foo[bar]=baz
)。
为了实现这一点,您需要利用encode
方法中的.URL
方法中的逻辑以及queryComponents
方法。您需要对queryComponents
方法稍作更改,才能将数组索引放入参数值中。然后你应该好好去。