如果 Alamofire 4 中发生任何故障,如何捕获

Posted

技术标签:

【中文标题】如果 Alamofire 4 中发生任何故障,如何捕获【英文标题】:How to catch if any failure happens in Alamofire 4 【发布时间】:2017-05-16 17:30:51 【问题描述】:

我正在以这种方式调用我的网络服务。

public func prepareUrl (baseUrl: String, appendString: String, bindedParams: String, isAuthorized: Bool, method: HTTPMethod, jsonBody: [String:String], callback: @escaping (String) ->Void> Void)

    let dm=Datamanager.sharedInstance
    let baseUrl=dm.globalUrl
    let urlString=baseUrl!+appendString as String+bindedParams as String
    print(urlString)
    Alamofire.request(urlString, method: method, parameters: nil, encoding: JSONEncoding.default)
        .downloadProgress(queue: DispatchQueue.global(qos: .utility))  progress in
            print("Progress: \(progress.fractionCompleted)")
        

        .validate  request, response, data in
            // Custom evaluation closure now includes data (allows you to parse data to dig out error messages if necessary)
            return .success


        

        .responseJSON  response in
            debugPrint(response)
            callback("success")
    

但是我如何在这里进行错误处理。即使我提到了 github Alamofire 4.0 迁移,我也不清楚该怎么做。 请帮我。 谢谢

【问题讨论】:

粘贴的代码无法编译。守卫声明中缺少一个主体。 对不起,我更新的方式正确。 【参考方案1】:

在 Alamofire gitHub 中有这样的方法: 你不需要验证,Alamofire 默认验证是 200 到 299 是成功的,你可以从响应中得到错误。

public func prepareUrl (baseUrl: String, appendString: String, bindedParams: String, isAuthorized: Bool, method: HTTPMethod, jsonBody: [String:String], callback: @escaping (String) ->Void> Void)
        
            let dm=Datamanager.sharedInstance
            let baseUrl=dm.globalUrl
            let urlString=baseUrl!+appendString as String+bindedParams as String
            print(urlString)
            Alamofire.request(urlString, method: method, parameters: nil, encoding: JSONEncoding.default)
                .downloadProgress(queue: DispatchQueue.global(qos: .utility))  progress in
                    print("Progress: \(progress.fractionCompleted)")
                
                .responseJSON  response in
                    debugPrint(response)
                    switch response.result 
                    case .success:
                        callback("success")
                    case .failure(let error):
                        print(error)
                    

            
        

查看documentation

【讨论】:

我在纠结应该把这个放在哪里 为什么要验证?告诉我,这样我就可以放完整的代码了。 如果我遇到任何网络故障或 HTTP 状态代码变成错误代码 @Randi 再看看答案

以上是关于如果 Alamofire 4 中发生任何故障,如何捕获的主要内容,如果未能解决你的问题,请参考以下文章

连接空间数据时如何解决球面几何故障

mysql 事务

MySQL-运维

mysql日志

mysql日志

mysql日志