服务器正在发送响应代码 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 会将通过响应序列化程序(在您的示例中, .responseJSON
使用的JSONResponseSerializer
.responseJSON
)成功的任何响应注册为成功。 如果您希望验证请求的响应代码,只需在请求链中添加.validate()
。 这将确保您的响应代码介于 200 和 299 之间,包括 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
。
有什么解决方案或解决方法吗?
谢谢