Alamofire renvoie .Success sur les codes d'état HTTP d'erreur
J'ai un joli scénario simple que je suis aux prises avec. Je suis en utilisant Alamofire pour enregistrer un utilisateur sur une API rest. Le premier appel à s'inscrire est réussi et que l'utilisateur peut se connecter. L'appel de la deuxième, lorsque vous tentez de vous inscrire avec la même adresse de courriel devrait conduire à un code d'état HTTP 409 à partir du serveur. Alamofire, mais renvoie un .Succès avec une vides de demande et de réponse. J'ai testé cette API avec le facteur et il retourne correctement un 409.
Pourquoi est Alamofire ne pas revenir .L'échec(erreur), où l'erreur est le code d'état d'info etc?
Ici est l'appel que je lance avec la même entrée à chaque fois.
Alamofire.request(.POST, "http://localhost:8883/api/0.1/parent", parameters: registrationModel.getParentCandidateDictionary(), encoding: .JSON).response(completionHandler: { (req, res, d, e) -> Void in
print(req, res, d, e)
})
source d'informationauteur Craigt | 2016-01-12
Vous devez vous connecter pour publier un commentaire.
De la Alamofire manuel:
Vous pouvez manuellement valider le code d'état à l'aide de la
validate
méthode, de nouveau, à partir de la notice:Ou vous pouvez semi-valider automatiquement le code d'état et le type de contenu à l'aide de la
validate
sans arguments:Si vous utilisez
response
vous pouvez vérifier laNSHTTPURLResponse
paramètre:Par défaut, 4xx codes d'état ne sont pas traitées comme des erreurs, mais vous pouvez utiliser
validate
de le traiter comme tel et puis l'incorporer dans votre grande erreur de manipulation:Ou, si vous utilisez
responseJSON
:Ci-dessus est Alamofire 4.x. Voir la précédente version de cette réponse pour les versions antérieures de Alamofire.
si vous utilisez valider() vous perdrez le message d'erreur du serveur, si vous voulez le garder, voir cette réponse https://stackoverflow.com/a/36333378/1261547