SuDream 2021-12-27 15:03 采纳率: 0%
浏览 147

iOS 关于Alamofire " 请求超时。" "网络连接已中断。" "似乎已断开与互联网的连接。 " "无法解析响应 ,"问题讨论解决

公司有app项目添加了接口错误监控上报到企业微信,有很多" 请求超时。" "网络连接已中断。" "似乎已断开与互联网的连接。 " "无法解析响应 ,"这种报错出现,而且公司内部测试基本没有出现过测试环境的错误上报(正式环境也没有),只有好几个地区的店会有,偶发性的断网,但实际上手机是有网络的(安卓未出现此问题),公司后台查询接口记录,没有查询到说iOS未提交到后端,
问题简述:iOS使用时会偶发性的断网接口全部请求超时(实际是有网络情况),后端查不到接口提交记录
网络请求框架 Alamofire 版本 4.5.1
Alamofire 封装请求Tools
class SDNetworkTool: NSObject {
    
    var netStatus = NetworkStatus()
    
    @objc   static let shareNetworkTool = SDNetworkTool()
    
}
extension  SDNetworkTool
{
    func  HttpClient(urlString:String,requstMethod:HTTPMethod,params:[String:Any],showHud:Bool,successBack:@escaping (_ json:JSON)->(),failBlock:@escaping (()->()),progress:(_ progess:Float)->())
    {
        ... 参数 header 处理
        Alamofire.request(urlEnd, method:requstMethod, parameters: paraDic, encoding: URLEncoding.default, headers: header).responseJSON { response in
            switch response.result {
            case .success(let value):
                ...  成功
            case .failure(let error):
                
                if !self.netStatus.isReachable {//网络不可达
                    
                    CSTProgressView.showErrorHUD("当前没有网络,请检查您的网络设置")
                    
                    failBlock();
                    
                    return
                }
                
                
                
                
                debugPrint("-----------------------报错的接口是:"+urlEnd+"报错信息:"+error.localizedDescription)
                                   
                failBlock();
         
                let errorMD=CSTError()
                errorMD.url=baseUrl+urlString
                errorMD.para=getJSONStringFromDictionary(dictionary: params as NSDictionary)
                errorMD.localizedDescription=error.localizedDescription
                CSTNetWorkErrorTool.SendSystemRobot(model:errorMD) {
                    print("成功上报")
                } fail: {
                    print("失败上报")
                }
            }
            
        }.downloadProgress { progress in
            
            debugPrint(progress);
            
        }
        
    }


//判断是否有网络
 class NetworkStatus {
        
        let networkManager =  NetworkReachabilityManager(host: "www.baidu.com")
        
        init() {
            
            startMonitor()
        }
        
        func startMonitor()  {
    
            self.networkManager?.startListening()
        }
        
        var isReachable:Bool{
            get{
                
                return (self.networkManager?.isReachable)!
            }
        }
    }
报错内容 alamofire error.localizedDescription (并不是某个接口,而是都有可能出现)

img

img

我的解答思路和尝试过的方法

因另外好几个项目都是用的同一个网络库(Alamofire) 版本也是一样,封装请求Tools类也是一个均未出现此问题,客户发过来的视频是一直在loding,app是有网络的不然会直接提示"当前没有网络,请检查您的网络设置",只有这个项目出现了这种情况,网上找了一大圈,也问了很多ios开发的朋友,均未得到有效的解决方案,只能来发帖,看是否人解答了,在线等待专家的出现

img

  • 写回答

1条回答 默认 最新

  • ACERROR 2021-12-27 19:56
    关注

    可能是客户端短时间内(几乎同时)发起网络请求导致的,请检查逻辑

    评论

报告相同问题?

问题事件

  • 创建了问题 12月27日

悬赏问题

  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题
  • ¥20 yolov5自定义Prune报错,如何解决?