我怎么写一个函数等待POST完成?我正在登录到一个网站,有多个重定向和使用连接()与QNetworkReply()
导致无限GET请求。
我现在正在使用等待计时器:
test->sendPostRequest(url, loginData);
QEventLoop loop;
QTimer::singleShot(8000, &loop, SLOT(quit()));
loop.exec();
test->sendGetRequest(request);
您可以使用QEventLoop
使用本地事件循环并将QNetworkAccessManager
完成的信号连接到QEventLoop
的退出槽。这样,当post完成时,本地事件循环退出,其余的被执行:
QNetworkAccessManager *networkManager = new QNetworkAccessManager(this);
networkManager->post(QNetworkRequest(serviceUrl), postData);
QEventLoop loop;
loop.connect(networkManager, SIGNAL(finished(QNetworkReply*)), SLOT(quit()));
loop.exec();
//...
我不应该认为这是"阻塞等待而不阻塞UI"的标准模式。