AFNetworking HTTP delete use body instead of URL
我正在尝试从我的iOS应用程序向RESTful Django Web服务发送HTTP DELETE请求。
我使用AFNetworking 2.0(2.4)。
在分析了我的API调用的成功块中的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <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; } }> |
现在我想知道是否可以在请求正文中发送参数,就像使用HTTP POST而不是在URL中发送它们一样。 那可能吗?
如何使用AFNetworking做到这一点?
我如何发送atm:
1 2 3 4 | AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; manager.requestSerializer = [AFJSONRequestSerializer serializer]; [manager DELETE:host_url parameters:params success:success failure:failure]; |
我想发送的身体(它在上面的"params"参数中有什么):
1 2 3 4 5 6 7 8 9 10 11 12 | { "data": { "connections": [ { "id": 92 }, { "id": 91 } ] } } |
有同样的问题。 由于问题仍然存在,将在此处发布答案。 您需要做的就是更改HTTP方法,将参数编码为查询字符串(默认为GET,HEAD和DELETE)。 请求序列化程序具有
1 | serializer.HTTPMethodsEncodingParametersInURI = [NSSet setWithObjects:@"GET", @"HEAD", nil]; |
@ f3n1kc提供的答案已更正,但万一您要查找Swift版本:
1 2 3 | let manager = AFHTTPSessionManager() manager.requestSerializer = AFHTTPRequestSerializer() manager.requestSerializer.HTTPMethodsEncodingParametersInURI = ["GET","HEAD"] |