Qt等待POST完成

时间:2014-05-06 10:31:50

标签: c++ qt http post httprequest

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

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

test->sendPostRequest(url, loginData);

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


   test->sendGetRequest(request);

1 个答案:

答案 0 :(得分:3)

您可以使用QEventLoop使用本地事件循环,并将QNetworkAccessManager完成的信号连接到QEventLoop的退出广告位。这样,当帖子结束时,本地事件循环退出,其余部分执行:

QNetworkAccessManager *networkManager = new QNetworkAccessManager(this);

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


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

//...

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