我正在编写一个应用程序,以等间隔请求网页,以便对其进行任何更改(以检查是否收到新数据)。在这我是怎么做到的。
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请求并多次获得新的回复。
我也想知道我做的是正确的事情,还是有可靠的方法从服务器获取数据变化的数据,而不是定期检查网站。
答案 0 :(得分:3)
我看到以下问题:
readyRead
每次请求会触发任意次数 - 包括零次(!),但您将其视为只触发一次。使用finished
信号,这就是你想要的:发射一次,不多发,不少发射。
update
广告位未将任何广告位连接到请求。