iOS: comment effectuer une requête HTTP de type POST?
Je suis approche de développement iOS et j'aimerais avoir une de mes premières applications pour effectuer une requête HTTP POST.
Aussi loin que je peux comprendre, je dois gérer la connexion qui s'occupe de la demande par l'intermédiaire d'un NSURLConnection
objet, ce qui m'oblige à avoir un délégué de l'objet, qui à son tour va traiter les données des événements.
Quelqu'un pourrait-il préciser la tâche avec un exemple concret?
Je dois contacter un point de terminaison https envoi des données d'authentification (nom d'utilisateur et mot de passe), et un texte simple réponse.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser NSURLConnection comme suit:
Définir votre
NSURLRequest
: UtilisationrequestWithURL:(NSURL *)theURL
d'initialiser la demande.Si vous avez besoin de spécifier une requête POST et/ou les en-têtes HTTP, utilisez
NSMutableURLRequest
avec(void)setHTTPMethod:(NSString *)method
(void)setHTTPBody:(NSData *)data
(void)setValue:(NSString *)value forHTTPHeaderField:(NSString *)field
Envoyer votre demande dans les 2 sens à l'aide de
NSURLConnection
:De façon synchrone:
(NSData *)sendSynchronousRequest:(NSURLRequest *)request returningResponse:(NSURLResponse **)response error:(NSError **)error
Cela renvoie une
NSData
variable que vous pouvez traiter.IMPORTANT: n'oubliez pas de coup de pied hors de la machine synchrone demande dans un thread séparé pour éviter le blocage de l'INTERFACE utilisateur.
De manière asynchrone:
(void)start
N'oubliez pas de mettre votre NSURLConnection du délégué pour gérer la connexion comme suit:
didReceiveAuthenticationChallenge
. Existe-il des problèmes de sécurité avec le codage en dur des mots de passe / nom d'utilisateur? Est-il un moyen de contourner cela?EDIT: ASIHTTPRequest a été abandonné par le développeur. C'est toujours très bon de l'OMI, mais vous devriez probablement chercher ailleurs maintenant.
Je recommande fortement d'utiliser le Bibliothèque ASIHTTPRequest si vous êtes à la manipulation HTTPS. Même sans https, il offre une belle enveloppe pour des trucs comme ça et même s'il n'est pas difficile à faire vous-même sur http normal, je pense juste que la bibliothèque est agréable et une excellente façon de commencer.
Le HTTPS complications sont loin d'être anodines dans les différents scénarios possibles, et si vous voulez être robuste pour le traitement de toutes les variations, vous trouverez les ASI de la bibliothèque d'une réelle aide.
Je pensais que je mettrais à jour ce post un peu et dire que beaucoup de l'iOS communauté s'est déplacé sur AFNetworking après
ASIHTTPRequest
a été abandonné. Je le recommande fortement. C'est un grand wrapper autour deNSURLConnection
et permet des appels asynchrones, et plus généralement tout ce dont vous pourriez avoir besoin.Ici est une mise à jour de réponse pour iOS7+. Il utilise NSURLSession, la nouvelle hotness. Avertissement, ce n'est pas testé et a été écrit dans un champ de texte:
Ou mieux encore, utilisez AFNetworking 2.0+. Généralement je sous-classe AFHTTPSessionManager, mais je suis en train de mettre tout cela en une seule méthode pour avoir un concis exemple.
Si vous êtes à l'aide de la réponse JSON sérialiseur, le responseObject sera l'objet de la réponse JSON (souvent NSDictionary ou NSArray).
NOTE: Pure Swift 3 (Xcode 8) exemple:
Veuillez essayer l'exemple de code suivant. C'est l'exemple simple de
dataTask
fonction deURLSession
.Xcode 8 et Swift 3.0
À L'Aide De URLSession:
URLSession de Déléguer l'appel:
L'aide du Bloc GET/POST/PUT/DELETE:
Fonctionne très bien pour moi.. essayez résultat de 100% de garantie
Ici est de savoir comment requête HTTP POST fonctionne pour iOS 8+ à l'aide de NSURLSession:
Espère que cela va satisfaire votre exigence suivante.