Alamofire:通过成功响应处理错误 [英] Alamofire: handle error with success response
本文介绍了Alamofire:通过成功响应处理错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我还是Alamofire和json的新手.我只想问一下如何处理成功响应中的错误.以下是api与发布请求的响应.
Hi i am still new to Alamofire and json. i just want to ask on how to handle error on success response. Below is the response of the api with post request.
{
data = {
"cabinet_id" = 3289146811;
"created_at" = "2018-04-11T04:53:43.288023001Z";
"user_id" = 123abc;
};
}
但是有时由于服务器错误,我得到如下响应
but sometimes i got response as below due to server error
{
error = {
"http_status_code" = 400;
message = "Unable to proceed";
type = "rent_request_failed";
};
}
这是我所做的
let url = "myurl"
let parameters = ["user_id": ""\(self.idPassed)"",
"cabinet_id": "\(self.stringPassed)"]
Alamofire.request(url, method: .post, parameters: parameters, encoding: URLEncoding.default).responseJSON { response in
if (response.result.isSuccess){
if let value = response.result.value {
//now success or failed always navigate to here
Helper.helper.switchToNavigationViewController(Navigation: "hundredpercent")
print(value)
}
//do your json stuff
} else if (response.result.isFailure) {
//Manager your error
switch (response.error!._code){
case NSURLErrorTimedOut:
//Manager your time out error
break
case NSURLErrorNotConnectedToInternet:
//Manager your not connected to internet error
break
default:
let alertt = UIAlertController(title: "Server Error!", message: "Please try again", preferredStyle: .alert)
alertt.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.default, handler: {(action:UIAlertAction!) in
//need navigate here if error
Helper.helper.switchToNavigationViewController(Navigation: "qrcodescan")
}))
self.present(alertt, animated: true)
}
}
}
推荐答案
通过在alamofire请求上添加
validate(statusCode: 200..<299)
来验证调用API时的响应状态代码.
Validate the response status code while calling API by adding
validate(statusCode: 200..<299)
on alamofire request.
如果您的http状态代码位于时间间隔200-299
中,它将验证成功,否则会失败.
It will validate to success if your http status code lies in interval 200-299
otherwise it go into failure case.
// Call response handler method of alamofire
Alamofire.request(url, method: .post, parameters: parameters, encoding: URLEncoding.default).validate(statusCode: 200..<299).responseJSON(completionHandler: { response in
switch response.result {
case .success(let data):
Logs.DLog(object: "\n Success: \(response)")
// Do your code here...
case .failure(let error):
Logs.DLog(object: "\n Failure: \(error.localizedDescription)")
// Do your code here...
}
})
这篇关于Alamofire:通过成功响应处理错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文