QT HTTP GET,怎么了?

QT HTTP GET , What's wrong?

本文关键字:怎么了 GET HTTP QT      更新时间:2023-10-16

这是代码:

QEventLoop eventLoop;
QNetworkAccessManager mgr();
QObject::connect(mgr, SIGNAL(finished(QNetworkReply*)), &eventLoop, SLOT(quit()));
QUrl url(site);
QNetworkRequest req(url);
QNetworkReply *reply = mgr.get(req);
eventLoop.exec();
if (reply->error() == QNetworkReply::NoError) {
    cout << "Success" endl;
    delete reply;
}
else {
    cout << "Failure" endl;
    delete reply;
}

错误发现:

. . request.cpp(17):错误C2665: 'QObject::Connect ': 3个重载都不能转换所有类型的主题

. . request.cpp(20):错误C2228:元素到左边。Get '必须是一个类、结构或联合

这叫做最烦人的解析,编译器认为mgr是一个函数声明。要解决这个问题,只需更改

QNetworkAccessManager mgr();

QNetworkAccessManager mgr;

您的connect也有一个错误,它应该看起来像这样(注意&mgr之前,因为connect需要指针):

QObject::connect(&mgr, SIGNAL(finished(QNetworkReply*)), &eventLoop, SLOT(quit()));

你有额外的括号。用途:

QNetworkAccessManager mgr;

QNetworkAccessManager没有没有参数的构造函数,所以解析器将其理解为函数声明。你也可能在第二行得到警告,比如:

: warning: empty parentheses interpreted as a function declaration [-Wvexing-parse]
QNetworkAccessManager mgr();
                         ^~