2010-06-25 2 views
0

Je voudrais poser des questions sur le bouton et la méthode url post dans l'application iPhone.Bouton d'application iPhone avec la méthode URL POST

Dans mon programme, je veux que l'utilisateur clique sur un bouton, puis une URL sera appelée par la méthode POST. Pour l'URL, il faudra peut-être rediriger vers quelque part (302 ou 303) etc et la finale est 200.

J'ai complété le bouton et la page de succès, cependant, je ne sais pas comment utiliser l'objectif-C bibliothèque. J'ai trouvé beaucoup de références de ce forum, mais je ne comprends pas ce que le code signifie. Quelqu'un peut-il m'aider?

Ce qui suit est une question que je crois liée à la question. Invoking a http post URL from iphone using .net web service

Merci beaucoup.

+0

Avez-vous du code de travail pour un bouton 'non-post'? pourrait être plus facile de montrer les changements nécessaires à ce code ... – drfrogsplat

Répondre

3

Si vous êtes autorisé à bloquer le thread sur lequel vous faites la demande, c'est à peu près aussi simple que possible.

NSString *postBody = [NSString stringWithFormat:@"param1=%@&param2", param1value, param2value]; 
NSData *postData = [postBody dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES]; 
NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]]; 

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:targetURL]; 
[request setHTTPMethod:@"POST"]; 
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; 
[request setValue:postLength forHTTPHeaderField:@"Content-Length"]; 
[request setHTTPBody:postData]; 

NSURLResponse *response = nil; 
NSError *error = nil; 
NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 

Quelques mises en garde:

  • Ceci effectuera une synchronisation (blocage) demande, donc soit le faire sur un fil de fond ou regarder dans les méthodes de délégué NSURLConnection.
  • Les données POST doivent être codées en URL. Vous devrez peut-être effectuer un prétraitement de vos valeurs de paramètre.
  • Les redirections se produiront automatiquement jusqu'à ce qu'une erreur 200 OK ou une erreur se soit produite.
+0

je vous remercie pour la réponse mais j'ai trouvé que lorsque je saisis les données dans le champ de texte et j'appuie sur le bouton Le bouton est en "bleu" et il y a ne change pas Et il y a 2 avertissement avertissement 1: 1 de passage d 'arguments 'requestWithURL:' de type pointeur incompatible je mets l'URL dans le URL_cible, "NSMutableURLRequest * demande = [NSMutableURLRequest requestWithURL: URL_cible];" Le résultat est comme "NSMutableURLRequest * request = [NSMutableURLRequest requestWithURL:" www.exampleURL.com "];" Avertissement 2: variable 'responseData' Y a-t-il un problème avec mon URL du symbole ""? Merci beaucoup – Questions

+0

aussi, l'url est "https", pas le "http", j'ai un crf, mais je ne sais pas comment faire – Questions

+0

'requestWithURL:' attend un 'NSURL *', pas un ' NSString * '. Utilisez la méthode de classe 'URLWithString:' pour le convertir. Et en ce qui concerne responseData, c'est à vous de décider si vous voulez ou non l'utiliser. Il contiendra le balisage de n'importe quelle page est servi en réponse à la demande. Pourriez-vous préciser quel type d'authentification vous devez effectuer contre le serveur? Le certificat est-il correctement installé sur le serveur? – warrenm