首先,Http请求链接是否有效,也是需要请求过之后才能知道的,相当于,我们用浏览器一样,无效链接会有:404、500等错误反馈。当然,Qt也是对应的判断机制,QNetworkReply::NetworkError这个错误枚举里面都可以包含了(查看帮助文档就知道了)。 QNetworkReply有两个信号:finished和error。finished基本上无论有没有错误都会触发,可以用lastError获取错误信息,error信号只有发生错误才会触发,且在finished信号之前触发。在此之前,都不会导致程序的崩溃,因为Qt已经处理了所有错误情况,所以,程序崩溃的原因很大可能(不排除Qt有BUG,概率很低)是开发的代码的缺陷导致的,我猜测,应该是没有finished的处理没有加入error的判断,导致read数据处理出现崩溃异常(只要发生error,获取的数据肯定是无法正常解析的)。我建议,还是先了解QNetworkAccessManager、QNetworkReply类的用法,再好好设计一下正确的Http请求流程和错误的请求流程。 其次,链接无法直接判断是否有效,但是服务器或者网络是可以判断的(比如:我们会ping一下服务器),QHostInfo::lookupHost可以用于判断服务器是否有效。
崩溃可能是因为查找不到服务器,程序也许执行分析错误,很消耗时间,因此卡在那里了, 之后的程序继续运行有可能导致崩溃。 如何检验链接可用不可用,我不知道 但是你可以使用线程QTread 来执行你的get
[quote=引用 2 楼 zzs0829 的回复:] 首先,Http请求链接是否有效,也是需要请求过之后才能知道的,相当于,我们用浏览器一样,无效链接会有:404、500等错误反馈。当然,Qt也是对应的判断机制,QNetworkReply::NetworkError这个错误枚举里面都可以包含了(查看帮助文档就知道了)。 QNetworkReply有两个信号:finished和error。finished基本上无论有没有错误都会触发,可以用lastError获取错误信息,error信号只有发生错误才会触发,且在finished信号之前触发。在此之前,都不会导致程序的崩溃,因为Qt已经处理了所有错误情况,所以,程序崩溃的原因很大可能(不排除Qt有BUG,概率很低)是开发的代码的缺陷导致的,我猜测,应该是没有finished的处理没有加入error的判断,导致read数据处理出现崩溃异常(只要发生error,获取的数据肯定是无法正常解析的)。我建议,还是先了解QNetworkAccessManager、QNetworkReply类的用法,再好好设计一下正确的Http请求流程和错误的请求流程。 其次,链接无法直接判断是否有效,但是服务器或者网络是可以判断的(比如:我们会ping一下服务器),QHostInfo::lookupHost可以用于判断服务器是否有效。
16,201
社区成员
26,591
社区内容
加载中
试试用AI创作助手写篇文章吧