AFNetworking HTTP删除使用正文而不是URL

Eye*_*all 24 cocoa-touch ios afnetworking afnetworking-2

我正在尝试从我的iOS应用程序向RESTful Django Web服务发送HTTP DELETE请求.我使用AFNetworking 2.0(2.4).

在分析了AFHTTPREquestOperation我的API调用的成功块后,我发现请求的主体是零.参数URL在URL中编码和发送.

<AFHTTPRequestOperation: 0x10c587940, 
state: isFinished, 
cancelled: NO 
request: <NSMutableURLRequest: 0x10c521ab0> { 
URL: https://anURL.com/connections?data%5Bconnections%5D%5B%5D%5Bid%5D=106 }, 
response: <NSHTTPURLResponse: 0x10c5c7590> { 
URL: anURL.com/
connections?data%5Bconnections%5D%5B%5D%5Bid%5D=106 
} 
{ status code: 200, headers {
    Connection = "Keep-Alive";
    "Content-Type" = "application/json";
    Date = "Tue, 05 Aug 2014 14:07:53 GMT";
    "Keep-Alive" = "timeout=5, max=100";
    Server = "Apache/2.4.7 (Ubuntu)";
    "Transfer-Encoding" = Identity;
} }>
Run Code Online (Sandbox Code Playgroud)

现在我想知道是否可以在请求正文中发送参数,就像使用HTTP POST而不是在URL中发送它们一样.那可能吗?

如何使用AFNetworking做到这一点?

我如何发送atm:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.requestSerializer = [AFJSONRequestSerializer serializer];

[manager DELETE:host_url parameters:params success:success failure:failure];
Run Code Online (Sandbox Code Playgroud)

我想发送的身体(它在上面的"params"参数中有什么):

{
    "data": {
        "connections": [
            {
                "id": 92
            },
            {
                "id": 91
            }
        ]
    }
}
Run Code Online (Sandbox Code Playgroud)

f3n*_*1kc 60

有同样的问题.由于问题仍然存在,将在此处发布答案.您需要做的就是更改HTTP方法,将参数编码为查询字符串(默认为GET,HEAD和DELETE).请求序列化程序具有该HTTPMethodsEncodingParametersInURI属性.只需将它设置为GET,HEAD就可以了:

serializer.HTTPMethodsEncodingParametersInURI = [NSSet setWithObjects:@"GET", @"HEAD", nil];
Run Code Online (Sandbox Code Playgroud)