pods mac instalar how example ios cocoa-touch afnetworking afnetworking-2

ios - mac - pod install xcode



AFNetworking HTTP eliminar el cuerpo de uso en lugar de URL (2)

Estoy tratando de enviar una solicitud HTTP DELETE a un servicio web RESTful Django desde mi aplicación iOS. Yo uso AFNetworking 2.0 (2.4).

Después de analizar AFHTTPREquestOperation en el bloque de éxito de mi llamada a la API, encontré que el cuerpo de la solicitud es nulo. Los parámetros URL codificados y enviados en la 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; } }>

Ahora me pregunto si es posible enviar los parámetros en el cuerpo de la solicitud, como se hizo con HTTP POST en lugar de enviarlos en la URL. ¿Es eso posible?

¿Cómo hacerlo utilizando AFNetworking?

¿Cómo envío atm:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; manager.requestSerializer = [AFJSONRequestSerializer serializer]; [manager DELETE:host_url parameters:params success:success failure:failure];

El cuerpo que quiero enviar (lo que está en el parámetro "params" arriba):

{ "data": { "connections": [ { "id": 92 }, { "id": 91 } ] } }


La respuesta proporcionada por @ f3n1kc está corregida, pero en caso de que busque la versión Swift:

let manager = AFHTTPSessionManager() manager.requestSerializer = AFHTTPRequestSerializer() manager.requestSerializer.HTTPMethodsEncodingParametersInURI = ["GET", "HEAD"]


Tuvo el mismo problema. Como la pregunta aún está abierta, publicaremos la respuesta aquí. Todo lo que necesita hacer es cambiar los métodos HTTP, que codifican los parámetros como una cadena de consulta (de forma predeterminada, GET, HEAD y DELETE). El serializador de solicitudes tiene la propiedad HTTPMethodsEncodingParametersInURI para eso. Solo configúralo en GET, HEAD y habrás terminado:

serializer.HTTPMethodsEncodingParametersInURI = [NSSet setWithObjects:@"GET", @"HEAD", nil];