Le serveur envoie le code de réponse 404, mais il semble que le framework l'interprète comme un succès.
Code:
Alamofire.request(.GET, Constants.Path.rootUrl + "/api/users", parameters: ["username" : usernameString, "limit":3] , headers: ["tb-token" : userToken!])
.responseJSON { response in
print(response.request) // original URL request
print(response.response) // URL response
print(response.data) // server data
print(response.result) // result of response serialization
let results = response.result
if let JSON = response.result.value {
if response.result.isSuccess == true {
print("Success with JSON: \(JSON)")
self.tableView.hidden = false
self.resultsDict = results.value as! NSArray
let resultsNumber = results.value!.count
self.numberOfResults.text = "Results(\(resultsNumber))"
self.numberOfResults.hidden = false
self.resultsN = resultsNumber
self.loadedMode = true
self.tableView.reloadData()
self.tableView.hidden = false
}
}
else {print("error")}
}
isSuccess est toujours vrai, quel que soit le code renvoyé par le serveur.
Par défaut, Alamofire enregistre toute réponse qui passe par le sérialiseur de réponse (dans votre exemple, le JSONResponseSerializer
utilisé par .responseJSON
) comme un succès. Si vous souhaitez valider le code de réponse de votre demande, ajoutez simplement un .validate()
à votre chaîne de demande. Cela garantira que votre code de réponse est compris entre 200 et 299, inclus. Vous pouvez également personnaliser la validation à l'aide des méthodes décrites dans la documentation .
Dans ton cas:
Alamofire.request(.GET, Constants.Path.rootUrl + "/api/users", parameters: ["username" : usernameString, "limit":3] , headers: ["tb-token" : userToken!])
.validate()
.responseJSON { response in }
Merci, a fonctionné comme un charme!
Merci, ça marche. En utilisant .validate()
la réponse est validée.
Mais il y a un autre problème, en utilisant .validate()
je n'obtiens pas la valeur de réponse : response.result.value
.
Existe-t-il une solution ou une solution de contournement ?
Merci