用QNetworkReply判断能否联网 QNetworkReply::NetworkError 网络错误处理 error()

本文探讨了QNetworkReply在请求完成前不返回错误的问题,并提供了使用QEventLoop确保错误回调的解决方案。通过实例展示了如何在检查网络连接时添加eventLoop,以获取QNetworkReply的实际错误状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述:

qDeBug()<<reply->error();

永远显示:

QNetworkReply::NoError

useNet::checkNetWork("https://www.baidu.com");//返回int


原因分析:

QNetworkReply在还没有finish之前不返回error

enum QNetworkReply::NetworkError



解决方案:

添加QEventLoop eventLoop循环至finished

connect(manager, SIGNAL(finished(QNetworkReply*)), &eventLoop, SLOT(quit()));
    eventLoop.exec();

int useNet::checkNetWork(QString url)
{
    QNetworkAccessManager *manager = new QNetworkAccessManager();
    QNetworkRequest request;
    QNetworkReply::NetworkError err;
    QEventLoop eventLoop;
    request.setUrl(QUrl(url));
    QNetworkReply* rplay = manager->get(request);
    connect(manager, SIGNAL(finished(QNetworkReply*)), &eventLoop, SLOT(quit()));
    eventLoop.exec();
    err=rplay->error();
    int i=err;
    if (i==0)
        return 1;
    else
        return 0;
}

有其他的方案欢迎在评论讨论

更多的QNetworkReply::NetworkError详情QNetworkReply Class | Qt Network 5.15.5

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

duckSoup___

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值