O servidor está enviando o código de resposta 404, mas parece que a estrutura está interpretando isso como um sucesso.
Código:
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 é sempre verdadeiro, qualquer que seja o código que o servidor está enviando de volta.
Por padrão, o Alamofire registra qualquer resposta que passe pelo serializador de resposta (em seu exemplo, o JSONResponseSerializer
usado por .responseJSON
) como um sucesso. Se você deseja validar o código de resposta de sua solicitação, basta adicionar .validate()
à sua cadeia de solicitação. Isso garantirá que seu código de resposta esteja entre 200 e 299, inclusive. Você também pode personalizar a validação usando os métodos descritos na documentação .
No seu caso:
Alamofire.request(.GET, Constants.Path.rootUrl + "/api/users", parameters: ["username" : usernameString, "limit":3] , headers: ["tb-token" : userToken!])
.validate()
.responseJSON { response in }
Obrigado, funcionou como um encanto!
Obrigado, funcionou. Usando .validate()
a resposta é validada.
Mas há outro problema, usando .validate()
não obtenho o valor de resposta: response.result.value
.
Existe alguma solução ou solução alternativa?
Obrigado