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

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 控制面板卸载无权限!!
    • ¥20 vb调用dll报错找不到文件
    • ¥20 SQL如何做交集查询
    • ¥15 unity 绘画方面的问题
    • ¥15 FTP 明明给了权限但是还是550 Permission denied问题
    • ¥20 Java的kafka错误unknowHostException
    • ¥20 gbase 8a没有lisense,需要获取一个lisense
    • ¥15 前端的3d饼图不知道用啥框架做的
    • ¥15 算法问题 斐波那契数 解答
    • ¥15 VS2019 SPY++ 获取句柄操作