Alamofire提示网络连接丢失

3
我在项目中经常遇到这个错误,尽管我完全联网,但我仍然反复出现这个错误,这让我非常烦恼。

enter image description here

有什么解决方法...?

我正在使用:

Swift - 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)
                }
        }
    }

添加你的代码来进行检查。 - Jogendar Choudhary
我按照通常的实现方式调用了API。 - Parth Patel
@ParthPatel 展示一下 Alamofire 调用完成后会发生什么,我不相信 Alamofire 会将错误显示为警报... - Robert Dresler
请检查我已经编辑过并附带了代码的问题。 - Parth Patel
@ParthPatel,post 完成后会发生什么? - Robert Dresler
显示剩余6条评论
3个回答

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

我需要在哪里更改策略? - Parth Patel

0

我不确定为什么会出现这个错误,但我也遇到了这个问题,所以我提供了一种解决方案。这个错误有一些独特的错误代码。因此,请检查该错误代码并忽略那里的警报,或者如果您收到此错误代码,则可以再次尝试此API调用。


0

如果您正在使用Alamofire,则可以找到解决此问题的方法。

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

import 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
        }

我对这个问题应用了相同的逻辑,但这种方法不起作用。你会得到相同的错误。 - Pratik Prajapati
是的,现在我在 API 调用之前遇到了网络错误。 - Parth Patel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接