Alamofire.request(URL, method: Endpoints.login.method, parameters: parameters, encoding: JSONEncoding.default, headers: nil)
.validate()
.responseObject { [weak self] (response: DataResponse<User>) in
switch response.result {
case .success(let user):
cb(.success(user))
case .failure(let error):
log.error(error)
cb(.failure(error))
}
}
如果輸入錯誤的密碼,那麼我無法打印api發送給我的確切錯誤消息。Alamofire/AlamofireObjectMapper - 如何從responseObject打印錯誤json?
po error.localizedDescription
我總是從alamofire獲得默認消息,即「Response status code was unacceptable: 401.
」。它應該打印動態錯誤消息,如Invalid username and password
。
順便說一句,我可以使用responseJson打印使用
.responseJSON { response in
if response.response?.statusCode == 200 {
print("Success with JSON: \(response.result.value)")
}
else {
let error = response.result.value as! NSDictionary
let errorMessage = error.object(forKey: "message") as! String
print(errorMessage)
}
動態出錯,但我應該怎麼做相同的responseObject
?
更新1 -
參數
let parameters = [
"username": userName,
"password": password
]
響應
Login Response: {
error = {
};
message = "401 - {\"success\":false,\"message\":\"Invalid user/pass\"}";
}
你能告訴我們你的API的反應嗎?與標題一樣,導致一些API開發者喜歡將錯誤放在標題響應中。 – Glenn
@Glenn - 標題爲零。我用參數和api響應更新了我的問題。所以,如果我刪除.validate(),那麼它會去成功的情況下,我可以看到response.result.value中的錯誤響應。但是,如果我添加.validate()然後它轉到預期的失敗情況,但然後我不能打印由服務器發送的錯誤響應。 – Tariq
@Tariq嘿,我添加了一個答案,這應該會幫助你在哪裏尋找錯誤反應,我也有一個類似的問題,我自己以及使用Alamofire時,這就是我如何解決這個問題 –