Requête HTTP dans Swift avec la méthode POST
Je suis en train de lancer une Requête HTTP dans Swift, de POSTER 2 paramètres d'une URL.
Exemple:
Lien: www.thisismylink.com/postName.php
Params:
id = 13
name = Jack
Quelle est la façon la plus simple de le faire?
Je ne veux même pas lire la réponse. Je veux juste envoyer à effectuer des modifications sur ma base de données via un fichier PHP.
Vous devez vous connecter pour publier un commentaire.
Dans Swift 3 et plus tard, vous pouvez:
Où:
Ce vérifie pour les deux fondamentaux de mise en réseau des erreurs ainsi que de haut-niveau les erreurs HTTP. C'est aussi bien pour cent s'échappe des paramètres de la requête.
Remarque, j'ai utilisé un
name
deJack & Jill
, pour illustrer la bonnex-www-form-urlencoded
résultat dename=Jack%20%26%20Jill
, qui est “codé pour cent” (c'est à dire l'espace est remplacé par%20
et la&
de la valeur est remplacée par%26
).Voir de la révision précédente date de cette réponse pour Swift 2 rendu.
POST
demande, vous pouvez utiliser le haut.$_POST
et les noms de fichiers, j'avais réduire ce chiffre à quelque chose de plus simple: Le script PHP ne fonctionnera pas si vous n'obtenez pas l'URL correcte. Mais il n'est pas toujours le cas que vous devez inclure le nom de fichier (par exemple, le serveur peut être en train de faire le routage d'URL ou par défaut des noms de fichiers). Dans ce cas, l'OP nous a donné une URL qui inclus un nom de fichier, donc j'ai simplement utilisé la même URL, comme il l'a fait.13&name=Jack
est une valeur pour la cléid
URLSession
à cet égard. Toutes les Api de réseau sont par nature asynchrone, ainsi ils devraient l'être. Maintenant, si vous êtes à la recherche pour d'autres gracieuses manières de traiter les requêtes asynchrones, vous pouvez envisager d'emballage (soitURLSession
demandes ou Alamofire) dans asynchrone, personnaliséOperation
sous-classe. Ou vous pouvez utiliser une des promesses de la bibliothèque, comme PromiseKit.url
, utilisezguard let url = URL(string: "www.myurl.com/whatever") else {return}
guard let url = ... else { fatalError("Invalid URL") }
, mais c'est syntaxique du bruit avec peu d'avantages. Vous allez en bas de la route d'écrire beaucoup de code de gestion d'erreur pour quelque chose qui n'est pas un end-user runtime problème, mais plutôt d'un problème de programmation erreur. L'analogie est implicitement déballé@IBOutlet
références. Avez-vous écrire des tonnes deguard let label = ...
code pour l'ensemble de vos points de vente? Pas de. Ce serait ridicule. Même ici.@IBOutlet
ou cette URL exemple, il est contre-productif d'ajouter que syntaxique de bruit, à mon humble avis. Et pour faire unguard
avec unelse
clause qui nereturn
, se cachent des problèmes sous-jacents, c'est une très mauvaise idée.Swift 3 et swift 4
Voici la méthode que j'ai utilisé dans ma bibliothèque de journalisation: https://github.com/goktugyil/QorumLogs
Cette méthode remplit les formulaires html à l'intérieur des Formulaires Google.
application/x-www-form-urlencoded
Ce que vous mettez-vous?Toutes les réponses ici utiliser des objets JSON. Cela nous a donné des problèmes avec la
$this->input->post()
les méthodes de nos Codeigniter contrôleurs. Le
CI_Controller
ne peut pas lire JSON directement.Nous avons utilisé cette méthode pour le faire SANS JSON
Maintenant votre CI_Controller serez en mesure d'obtenir
param1
etparam2
à l'aide de$this->input->post('param1')
et$this->input->post('param2')