AFHTTPSessionManager Subclass: Publicar API con cuerpo.

Me di count de cómo pasar params utilizando AFnetworking, pero estoy teniendo dificultades para tratar de averiguar cómo pasar el cuerpo como parte de mi llamada API. Actualmente esto es lo que hago:

- (void)authenticateUser:(NSString *)username password:(NSString *)password success:(void (^) (NSString *accessToken))success failure:(RequestFailureBlock)failure { NSString *authURL = @"http://someurlforauthentication"; NSDictionary *parameters = @{@"username" : username, @"password" : password }; [self.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; [self POST:authURL parameters:parameters success:^(NSURLSessionDataTask *task, id responseObject){ NSString *accessToken = responseObject[@"access_token"]; // Store Access Token NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; [defaults setObject:accessToken forKey:APIAuthorizationToken]; [defaults synchronize]; NSLog(@"Hello %@", accessToken); success(accessToken); } failure:failure]; } 

Lo que necesito hacer es no pasar ningún parámetro y, en su lugar, pasar un cuerpo con una cadena json que contenga cnetworkingenciales de inicio de session. Algo como esto

  AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request]; // Body const char bytes[43] = "{\n \"username\": \"max\",\n \"password\": \"pass\"\n}"; request.HTTPBody = [NSData dataWithBytes:bytes length:43]; 

Gracias por adelantado.

Con AFJSONRequestSerializer y AFJSONResponseSerializer puede hacer lo que quiera. Luego solo use el código que estaba usando para publicar. Todo el process debería verse de la siguiente manera:

 NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration]; AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] initWithSessionConfiguration:configuration]; [manager setRequestSerializer:[AFJSONRequestSerializer serializer]]; [manager setResponseSerializer:[AFJSONResponseSerializer serializer]]; NSDictionary *parameters = @{@"test": @"this is a test"}; [manager POST:@"http://localhost:8080/TestRequest/test" parameters:parameters success:^(NSURLSessionDataTask *task, id responseObject) { NSLog(@"%@",[responseObject description]); } failure:^(NSURLSessionDataTask *task, NSError *error) { NSLog(@"%@",[error localizedDescription]); }];