サーバーは応答コード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は、サーバーが送り返すコードに関係なく、常にtrueです。
デフォルトでは、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
。
解決策や回避策はありますか?
ありがとう