本文介绍了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:通过成功响应处理错误
发布评论