Qt 等待 POST 完成

Qua*_*ale 1 c++ post qt http httprequest

我将如何编写一个函数来等待 POST 完成?我正在登录一个有多个重定向的网站,并使用 connect()QNetworkReply()导致无限的 GET 请求。

我现在正在使用等待计时器:

test->sendPostRequest(url, loginData);

    QEventLoop loop;
    QTimer::singleShot(8000, &loop, SLOT(quit()));
    loop.exec();


   test->sendGetRequest(request);
Run Code Online (Sandbox Code Playgroud)

Nej*_*jat 5

您可以使用本地事件循环,使用QEventLoop并将您的信号完成连接QNetworkAccessManagerQEventLoop. 这样当帖子完成时,本地事件循环退出并执行其余部分:

QNetworkAccessManager *networkManager = new QNetworkAccessManager(this);

networkManager->post(QNetworkRequest(serviceUrl), postData);


QEventLoop loop;
loop.connect(networkManager, SIGNAL(finished(QNetworkReply*)), SLOT(quit())); 
loop.exec();

//...
Run Code Online (Sandbox Code Playgroud)

我不应该认为这是“阻塞等待而不阻塞 UI”的标准模式。