[SWIFT] Alamofire et Headers ?
Hola ^^
Je suis sur un projet qui me donne du fil à retordre et je galère un peu avec Alamofire..
En gros, j'essaie d'interroger une API avec Alamofire mais pour ça, je dois lui passer mon token en Headers et je tourne en rond..
Ca fonctionne très bien lors des tests avec Postman.
Voici la capture d'écran.. je passe bien mon token dans le header..
Je reçois bien la réponse en JSON de mon API.
Comment faire pour reproduire cette manipulation via Alamofire ?
Comment lui passer un token en header ?
Une idée ? Une piste ?
Merci de votre aide
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Déjà, est ce qu'on est d'accord que pour envoyer des paramètres (en post) ainsi que des headers, le code suivant est bon :
ça m'aidera déjà à voir si je pars d'une bonne base et que peut-être, le soucis est ailleurs
Astuce:
Plutôt que faire :
Alamofire.request(...).responseJSON{...}
Fait:
Cela devrait te mettre dans la console un code "bash" avec un
curl
.Dans POSTMAN, demande-lui de générer l'équivalent de la requête en
Bash/cURL
.Tu devrais trouver la différence, et tester différents paramétrages de ton côté jusqu'à tomber sur le bon.
Merci de l'astuce ^^
Du coup en testant, j'obtiens juste l'url dans la console..
Aucun paramètres, aucun headers.. pourtant ils sont bien passés dans mon code
Pardon, appelles plutôt :
print("request: \(request.debugDescription)")
ouprint("request: \(request.curlRepresentation)")
.C'est tiré d'une de mes réponses sur SO.
C'était en effet :
Du coup, j'ai bien mes 2 comparaisons et pour moi, c'est bon, j'ai bien tout mes parametres et headers dans la requete Alamofire
Requête Postman :
Requête Alamofire :
J'ai bien mon token, j'ai bien mon parametres (IdSociete) .. pourtant je me retrouve avec une erreur 500..
Voici ce que me dit la console :
Dans l'doute, tu n'envoies pas du JSON dans le cas d'Alamofire, mais du form url encoded.
Ah oui merde, je suis complètement passé à côté..
Du coup, voici mon nouveau code et maintenant ça fonctionne ^^
J'ai juste rajouter l'encodage (encoding : JSONEncoding.default) dans ma requête et c'est good, j'ai bien une réponse de mon serveur.. pfiouf ^^
Merci Larme
Maintenant que c'est résolu on peut parler de ta manière déplorable de nommer tes variables ?
Déjà une majuscule pour un nom de variable c'est proscrit dans la majorité des langages.
D'autre part ce n'est pas parce que Swift autorise l'unicode dans les noms de composants qu'il faut l'utiliser. Ce qui fait que les caractères accentués sont à proscrire également.
Après c'est ton code, tu fais comme tu veux mais ça pique les yeux.
Un jour j'ai écrit un petit programme avec uniquement des emojis comme noms de variables, juste pour rigoler. Amusant 30 secondes, mais horrible sur le long terme. Je n'ai jamais recommencé, restant fidèle à la notation chameau, sans minuscules accentuées.
let ceciEstUneVariableChameau = true
Insou, les identifiants avec une majuscule, c'est pour le nom des classes et les types de variables !
let maMaison = UneMaison()