Der Server sendet den Antwortcode 404, aber es sieht so aus, als würde das Framework ihn als Erfolg interpretieren.
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 ist immer wahr, egal welchen Code der Server zurücksendet.
Standardmäßig registriert Alamofire jede Antwort, die den Antwort-Serializer durchläuft (in Ihrem Beispiel das JSONResponseSerializer
das von .responseJSON
) als Erfolg. Wenn Sie den Antwortcode Ihrer Anfrage validieren möchten, fügen Sie einfach .validate()
zu Ihrer Anfragekette hinzu. Dadurch wird sichergestellt, dass Ihr Antwortcode zwischen 200 und 299 (einschließlich) liegt. Sie können die Validierung auch mit den in der Dokumentation beschriebenen Methoden anpassen.
In deinem Fall:
Alamofire.request(.GET, Constants.Path.rootUrl + "/api/users", parameters: ["username" : usernameString, "limit":3] , headers: ["tb-token" : userToken!])
.validate()
.responseJSON { response in }
Danke, hat wie ein Zauber funktioniert!
Danke, hat funktioniert. Mit .validate()
die Antwort validiert.
Aber es gibt noch ein anderes Problem, mit .validate()
bekomme ich den Antwortwert nicht: response.result.value
.
Gibt es eine Lösung oder einen Workaround?
Vielen Dank