【问题标题】:Qt wait for POST to completeQt 等待 POST 完成
【发布时间】:2014-05-06 10:31:50
【问题描述】:

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

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

test->sendPostRequest(url, loginData);

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


   test->sendGetRequest(request);

【问题讨论】:

  • 您的问题不清楚,请多解释一下。你想上传文件吗?为什么不执行 post in{ QEventLoop loop;发布循环.exec(); } 这些陈述
  • 为什么不使用第二个函数并正确使用信号槽

标签: c++ qt http post httprequest


【解决方案1】:

您可以使用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”的标准模式。

【讨论】:

    猜你喜欢
    • 2011-09-08
    • 2017-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-04
    • 2020-07-04
    • 2011-12-28
    • 1970-01-01
    相关资源
    最近更新 更多