ios json http-post afnetworking-2

ios - Publicación de datos JSON utilizando AFNetworking 2.0



http-post afnetworking-2 (5)

Aquí hay una plantilla simple para los parámetros POST almacenados en los parámetros NSMutableDictionary en formato JSON. Trabaja con AFNetworking 2.4.1.

NSString *baseURL = @"http://your-server.com/"; NSString *path = @"method/url/"; NSMutableDictionary *parameters = [NSMutableDictionary dictionary]; [parameters setObject:@"value" forKey:@"key"]; AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] initWithBaseURL:baseURL]; manager.requestSerializer = [AFJSONRequestSerializer serializer]; manager.responseSerializer = [AFJSONResponseSerializer serializer]; [manager POST:path parameters:parameters success:^(NSURLSessionDataTask *task, id responseObject) { NSLog(@"JSON: %@", responseObject); //here is place for code executed in success case } failure:^(NSURLSessionDataTask *task, NSError *error) { //here is place for code executed in error case UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error while sending POST" message:@"Sorry, try again." delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil]; [alertView show]; NSLog(@"Error: %@", [error localizedDescription]); }];

Tengo un script web que acepta la cadena JSON como entrada a través de la solicitud HTTP POST. He encontrado varios ejemplos de AFNetworking 1.x para el mismo. ¿Alguien puede indicarme o dar el ejemplo de AFNetworking 2.0 para hacer una solicitud HTTP POST a un script web con formato JSON como entrada?

Gracias


En veloz

Agregue esto en manager.AFHTTPRequestOperationManager

manager.requestSerializer = AFJSONRequestSerializer(writingOptions: NSJSONWritingOptions.PrettyPrinted)


Si desea publicar json en el servidor, debe publicar sus parámetros de la siguiente manera.

De esta manera, puede encontrar el "Tipo de contenido" en el encabezado de su solicitud: "application / json".

AFJSONRequestSerializer *serializer = [AFJSONRequestSerializer serializer]; [serializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; [serializer setValue:@"application/json" forHTTPHeaderField:@"Accept"]; manager.requestSerializer = serializer; NSDictionary *paras = @{@"uid" : @(10020)}; [manager POST:@"http://your.request.url" parameters:paras success:^(AFHTTPRequestOperation *operation, id responseObject) { }failure:^(AFHTTPRequestOperation *operation, NSError *error) { NSLog(@"the falire is %@", error); }];

Que esto ayude. :)


Si quiere publicar el diccionario de parámetros, use la cadena json siguiendo el código

NSMutableURLRequest * urlRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"your_webservice_post_url"]]; [urlRequest setValue:@"application/json" forHTTPHeaderField:@"Accept"]; [urlRequest setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; NSError *error; NSDictionary *parameters = @{@"customValue":@"value"}; NSData *jsonData = [NSJSONSerialization dataWithJSONObject:parameters options:NSJSONWritingPrettyPrinted error:&error]; [urlRequest setHTTPMethod:@"POST"]; [urlRequest setHTTPBody:jsonData];


después de buscar documentos y probar algunos códigos que obtuve a continuación como ejemplo

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; manager.requestSerializer = [AFJSONRequestSerializer serializer]; NSDictionary *params = @ {@"user" :txtUserName, @"pwd" :txtPwd }; [manager POST:URL_SIGNIN parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) { NSLog(@"JSON: %@", responseObject); } failure: ^(AFHTTPRequestOperation *operation, NSError *error) { NSLog(@"Error: %@", error); }];

Además, no olvide establecer el tipo de encabezado de respuesta en el script del servidor como Aplicación / json.