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

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条回答 默认 最新

    报告相同问题?

    相关推荐 更多相似问题

    问题事件

    • 创建了问题 12月27日

    悬赏问题

    • ¥15 python程序编写
    • ¥15 Type-C扩展坞的RTL8153地址硬改
    • ¥15 uniapp websocket 发送 sub 监听后,代码自动发送了 unsub ,解除了监听
    • ¥15 nativefier封装electron的应用遇到alert弹窗后input栏获取不到焦点,confirm不弹出的问题。
    • ¥20 怎样让两台不同的电脑访问外网的IP一致?
    • ¥20 有没有认识硅云的研发 求介绍
    • ¥16 Python工时计算器改写
    • ¥15 关于#Python#的问题,如何解决?
    • ¥15 CMD 生成TXT内容输出成一行
    • ¥20 关于#pandas#的问题,如何解决?(语言-python)