问题描述:
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