【问题标题】:The Network Connection was lost from AlamofireAlamofire 网络连接丢失
【发布时间】:2019-01-07 06:19:12
【问题描述】:

我在项目中多次遇到此错误,这让我非常恼火,因为我有完整的互联网连接,尽管我反复收到此错误。

解决办法是什么...?

我正在使用

斯威夫特 - 3.3

Alamofire - 4.7.3

API 调用代码:

class  func post(_ URL: String, withParams params: [String : AnyObject], onView parentView: UIViewController, hnadler completion: @escaping ([AnyHashable: Any]!) -> Void) {
        var URLString  = String()
        URLString = APIConstants.kServerURL + URL
        var headers = [String: String]()
        headers["Content-Type"] = "application/x-www-form-urlencoded"
        
        Alamofire.request(URLString,method: .post, parameters: params , headers : headers)
            .validate(contentType: ["application/vnd.api+json"])
            .responseJSON { response in
                switch response.result {
                case .success( _):
                    var completionVarible = [NSObject : AnyObject]()
                    completionVarible = response.result.value as! [AnyHashable: Any]! as [NSObject : AnyObject]
                    completion(completionVarible)
                case .failure(let error):
                    self.handleFailureResponse(Error: error as NSError?, parentView: parentView)
                }
        }
    }

【问题讨论】:

  • 添加您的代码进行检查
  • var URLString = String() URLString = APIConstants.kServerURL + URL var headers = [String: String]() headers["Content-Type"] = "application/x-www-form-urlencoded " Alamofire.request(URLString,method: .post, 参数: params , headers : headers) .validate(contentType: ["application/vnd.api+json"]) .responseJSON { response in }
  • 我按照我们通常实现的方式调用了api
  • 使用此代码编辑您的问题
  • @ParthPatel 向我们展示在完成 Alamofire 调用时会发生什么,我不相信 Alamofire 会将错误显示为警报...

标签: ios swift alamofire


【解决方案1】:

如果警报立即出现,您可以尝试将缓存策略更改为 .reloadIgnoringCacheData

【讨论】:

  • 我必须在哪里更改政策?
【解决方案2】:

我不知道为什么会发生这个错误,但我也遇到过这个错误,所以我提出了一个解决方案。这个错误有一些独特的错误代码。所以检查那个错误代码并忽略那里的警报,或者如果你得到这个错误代码,你可以再次尝试这个 API 调用。

【讨论】:

    【解决方案3】:

    如果您使用 Alamofire,我会找到解决此问题的方法。

    首先在你的公共类中导入 Alamofire,否则你可以创建一个单独的类来检查互联网连接。

    导入 Alamofire

    class Connectivity {
        class func isConnectedToInternet() ->Bool {
            return NetworkReachabilityManager()!.isReachable
        }
    }
    

    在调用 API 之前调用下面的方法

    if !Connectivity.isConnectedToInternet() {
                ServiceHandler.ShowAlert(message: "Check your internet connectivity.", title: "Error", parentView: self) //This is my comman method for display alert.
                return
            }
    

    【讨论】:

    • 我对这个问题应用了相同的逻辑,但这个没有帮助。你会得到同样的错误。
    • 是的,现在我在调用 API 之前遇到网络错误。
    猜你喜欢
    • 1970-01-01
    • 2017-01-02
    • 2016-02-22
    • 2013-09-02
    • 2015-12-27
    • 2014-09-03
    • 1970-01-01
    • 2020-05-08
    • 2015-07-27
    相关资源
    最近更新 更多