2014-04-17 6 views
0

J'essaie de comprendre comment utiliser AFNetworking 2.0. J'essaie de POSTER un identifiant avec un nom d'utilisateur et un mot de passe.Comment faire une requête POST dans iOS?

Ceci est ma tentative actuelle, mais quelque chose ne fonctionne pas car il n'est pas envoyé.

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 
NSDictionary *parameters = @{@"loginName": @"password"}; 
[manager POST:@"http://xxxx.com/login" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) { 
    NSLog(@"JSON: %@", responseObject); 



    NSLog(@"Data saved"); 

    MainViewController *mainView = [[MainViewController alloc] initWithNibName:@"MainViewController" bundle:nil]; 
    mainView.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; 
    [self presentViewController: mainView animated:YES completion:nil]; 


} failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
    NSLog(@"Error: %@", error); 
    NSString *error_msg = (NSString *) error; 
    [self alertStatus:error_msg :@"Sign in Failed!" :0]; 
}]; 

    } 
} @catch (NSException * e) { 
     NSLog(@"Exception: %@", e); 
     [self alertStatus:@"Sign in Failed." :@"Error!" :0]; 
    } 

Cependant rien ne se passe, il suffit de garder obtenir cette impression:

2014-04-16 20:14:09.903 Slidedrawer[9279:60b] Error: Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed. (Cocoa error 3840.)" (JSON text did not start with array or object and option to allow fragments not set.) UserInfo=0x8e78bd0 {NSDebugDescription=JSON text did not start with array or object and option to allow fragments not set.} 

La réponse sera en JSON. Quelqu'un sait ce que j'ai besoin de modifier dans le code ou comment le réparer?

JSON: { 
    "_id" = 533cb1c453769a02008c2d55; 
    name = dddd; 
    picture = "/img/users/default.jpg"; 
} 

Comment puis-je accéder à ce qui précède retourné JSON, en essayant de décortiquer chaque retourné propriété sur une chaîne ou entier etc ...

Répondre

1

Essayez ceci:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 
NSDictionary *params = @{@"userName": username, @"password": password}; 
manager.responseSerializer = [AFJSONResponseSerializer serializer]; // if response JSON format 
[manager POST:@"http://asd.com/login.php" parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) { 
    NSLog(@"%@", responseObject); 
} failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
    NSLog(@"%@", error); 
}]; 

Pour analyse de la réponse utiliser le responseObject comme NSDictionary:

NSString *userName = [responseObject objectForKey:@"userName"]; 
NSString *password = [responseObject objectForKey:@"password"]; 

Hope this helps .. :)

+0

Salut, je vois le responseSerializer comment puis-je en extraire des données exactement s'il revient comme je l'ai posté ci-dessus? – Lion789

+0

@ Lion789 Voir mes modifications. – Rashad

+0

merci beaucoup pour votre aide – Lion789

1

Vous pouvez trouver Send Nested JSON using AFNetworking pour la réponse.

L'erreur Domaine d'erreur = Code NSCocoaErrorDomain = 3840 est un objet JSON non valide reçu du serveur. Cela est probablement dû au fait que le serveur ne gère pas correctement vos paramètres manquants. Votre dictionnaire de paramètres n'a qu'un seul objet clé loginName.

Questions connexes