Сервер отправляет ответ с кодом 404, но похоже, что структура интерпретирует это как успешное.
Код:
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 всегда истинно, независимо от кода, который сервер отправляет обратно.
По умолчанию Alamofire регистрирует любой ответ, который проходит через сериализатор ответов (в вашем примере JSONResponseSerializer
используется .responseJSON
) как успешный. Если вы хотите проверить код ответа на свой запрос, просто добавьте .validate()
в свою цепочку запросов. Это гарантирует, что ваш код ответа будет от 200 до 299 включительно. Вы также можете настроить проверку, используя методы, описанные в документации .
В твоем случае:
Alamofire.request(.GET, Constants.Path.rootUrl + "/api/users", parameters: ["username" : usernameString, "limit":3] , headers: ["tb-token" : userToken!])
.validate()
.responseJSON { response in }
Спасибо, сработало как шарм!
Спасибо, сработало. С помощью .validate()
ответ проверяется.
Но есть еще одна проблема: используя .validate()
я не получаю значение ответа: response.result.value
.
Есть ли какое-нибудь решение или обходной путь?
Спасибо