多次使用QNetworkAccessManager GET

时间:2015-04-16 18:42:41

标签: c++ qt networking

我正在编写一个应用程序,以等间隔请求网页,以便对其进行任何更改(以检查是否收到新数据)。在这我是怎么做到的。

 private:

 QNetworkReply *r;
 QNetworkAccessManager *m;
 QNetworkRequest request;
 QTimer *timer;

在构造函数中,

m = new QNetworkAccessManager(this);
timer = new QTimer(this);
connect(r , SIGNAL(readyRead()), this , SLOT(readit()));
connect(timer, SIGNAL(timeout()), this, SLOT(update()));
timer->start(1000);

readit功能,

void MainWindow::readit(){
QString st;
st=r->readAll();
m->deleteResource(request);
ui->textBrowser->append(st);
}

更新功能,

void MainWindow::update()
{
 request.setUrl(QUrl("http://localhost/test/default.php"));
 r = m->get(request);
}

我的问题是m->get(request)仅在第一次调用时获取请求,当再次调用它时它什么都不做。我做了几次实验但结果没有成功。我使用点击按钮将第二个请求更改为另一个网页,但它也没有做任何事情。

所以我需要专家的帮助,如何更新get请求并多次获得新的回复。

我也想知道我做的是正确的事情,还是有可靠的方法从服务器获取数据变化的数据,而不是定期检查网站。

1 个答案:

答案 0 :(得分:3)

我看到以下问题:

  1. readyRead每次请求会触发任意次数 - 包括零次(!),但您将其视为只触发一次。使用finished信号,这就是你想要的:发射一次,不多发,不少发射。

  2. update广告位未将任何广告位连接到请求。