Alamofire:如何处理和分类错误?

Posted

技术标签:

【中文标题】Alamofire:如何处理和分类错误?【英文标题】:Alamofire: how to handle and classify errors? 【发布时间】:2016-01-15 16:35:16 【问题描述】:

Alamofire 的一个例子如下:

Alamofire.request(.GET, "https://httpbin.org/get", parameters: ["foo": "bar"])
     .validate()
     .responseJSON  response in
         switch response.result 
         case .Success:
             print("Validation Successful")
         case .Failure(let error):
             print(error)
         
     

我如何处理“网络中断”、“404”、“未找到服务器”等错误,以便为用户提供信息性借口,说明他们的内容无法加载的原因?

【问题讨论】:

是的,我如何确定发生了什么故障?真可怕! 【参考方案1】:

你可以像这样获取http状态码并处理它:

Alamofire.request(.GET, USERS_URL, headers: headers, encoding: .JSON)
        .responseJSON  response in
            debugPrint(response)
            switch response.result 
            case .Success(let data):
                if response.response!.statusCode == 200 
                  //do things
                else if response.response!.statusCode == 401 
                    //do things
                
            case .Failure(let error):
                print("Request failed with error: \(error)")
            
    

【讨论】:

是否有.Failure 案例的文档?它是否包括网络关闭/服务器无法访问错误? .Success 是在请求​​成功的情况下,.Failure 表示无法执行请求! http状态来自服务器的响应 是的,我如何确定发生了什么故障?真可怕!

以上是关于Alamofire:如何处理和分类错误?的主要内容,如果未能解决你的问题,请参考以下文章

如何处理和发送远程通知 Objective-C

time_wait状态如何处理和建议

文件保存期间如何处理和提示文件名(Word 2016,VBA)

如何处理和解析JPA持久性异常以向用户提供有意义的消息

如何处理网络中间请求的变化 - Alamofire

Swift Alamofire 如何处理来自循环的所有请求