Qt等待POST完成

Qt wait for POST to complete

本文关键字:完成 POST 等待 Qt      更新时间:2023-10-16

我怎么写一个函数等待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"的标准模式。