web-dev-qa-db-fra.com

Publication de données JSON avec AFNetworking 2.0

J'ai un script Web qui accepte une chaîne JSON en tant qu'entrée via HTTP POST. J'ai rencontré plusieurs exemples avec AFNetworking 1.x identiques. Quelqu'un peut-il m'indiquer ou donner un exemple à AFNetworking 2.0? faire une requête HTTP POST) à un script Web avec JSON formaté en entrée?

Merci

44
vishal dharankar

après avoir recherché des documents et essayé des codes, je suis un exemple à suivre

 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);
 }];

N'oubliez pas non plus de définir le type d'en-tête de réponse dans le script du serveur comme Application/json.

78
vishal dharankar

Voici un modèle simple pour les paramètres POST stockés dans NSMutableDictionary paramètres au format JSON. Fonctionne avec 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]);
}];
20
lukszar

Si vous souhaitez publier JSON sur le serveur, vous devez poster vos paramètres en utilisant la méthode ci-dessous.

Utilisez cette méthode pour trouver le "type de contenu" dans l'en-tête de votre demande: "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);

}];

Puisse ceci aider. :)

8
generalzyq

En rapide:

Ajouter ceci dans manager.AFHTTPRequestOperationManager

manager.requestSerializer = AFJSONRequestSerializer(writingOptions: NSJSONWritingOptions.PrettyPrinted)
5
Tamojit Pal

si vous voulez poster un dictionnaire de paramètres json string, utilisez le code suivant

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];
2
Syed Abdul Basit