Encabezado AFHTTPSessionManager

Estoy intentando establecer un encabezado pnetworkingeterminado para "Content-Type" configurando HTTPAdditionalHeaders. Cuando miro el encabezado de request, AFNetworking (v 2.0.3) lo vuelve a cambiar. También intenté establecer el encabezado por setValue: forHTTPHeaderField: en el requestSerializer, pero no tuvo éxito. ¿Qué me falta?

ACTUALIZADO

NSURL *URL = [NSURL URLWithString:@"http://example.com/api"]; NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration]; configuration.HTTPAdditionalHeaders = @{@"Content-Type": @"multipart/form-data"}; AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] initWithBaseURL:URL sessionConfiguration:configuration]; manager.responseSerializer = [AFJSONResponseSerializer serializer]; NSMutableDictionary *params = [[NSMutableDictionary alloc]init]; [params setValue:@"some value" forKey:@"someKey"]; [manager POST:@"search" parameters:params success:^(NSURLSessionDataTask *task, id responseObject) { NSLog(@"success"); } failure:^(NSURLSessionDataTask *task, NSError *error) { NSLog(@"error"); }]; 

Creo que AFNetworking establece Content-Type automáticamente y no puede cambiarlo. Para enviar datos utilizando Content-Type multipart / form-data:

 NSURL *URL = [NSURL URLWithString:@"http://example.com/api"]; NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration]; AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] initWithBaseURL:URL sessionConfiguration:configuration]; manager.responseSerializer = [AFJSONResponseSerializer serializer]; NSMutableDictionary *params = [[NSMutableDictionary alloc]init]; [params setValue:@"some value" forKey:@"someKey"]; [manager POST:@"search" parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { //If you need to send image UIImage *image = [UIImage imageNamed:@"my_image.jpg"]; [formData appendPartWithFileData:UIImageJPEGRepresentation(image, 0.5) name:@"Image" fileName:@"my_image.jpg" mimeType:@"image/jpeg"]; } success:^(NSURLSessionDataTask *task, id responseObject) { } failure:^(NSURLSessionDataTask *task, NSError *error) { }]; 

En el file AFURLRequestSerialization.m puede encontrar la siguiente propiedad:

 @property (readwrite, nonatomic, strong) NSMutableDictionary *mutableHTTPRequestHeaders; 

Ahora puede subclass AFHTTPRequestSerializer (o AFJSONRequestSerializer ) y agregar los encabezados HTTP deseados a ese dictionary mutable (no olvide importar el file AFURLRequestSerialization.m en su file .m de serializador de request).

Luego, simplemente establece la propiedad requestSerializer de su subclass AFHTTPSessionManager en un nuevo object de su nueva class de serializador de request (por ejemplo, en el método init ) y ya está. Todas las requestes con su administrador de session deberían include sus encabezados HTTP.

AFNetworking viene con un AFJSONRequestSerializer y AFJSONResponseSerializer :

 [manager setRequestSerializer:[[AFJSONRequestSerializer alloc] init]]; [manager setResponseSerializer:[[AFJSONResponseSerializer alloc] init]];