我正在编写一个应用程序,以相等的时间间隔请求网页,以获取其中的任何更改(以检查是否收到新数据)。我是怎么做到的。
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);
读取函数,
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)
仅在第一次调用时获取请求,再次调用时它什么也不做。我做了几次实验,但最终没有成功。我使用按钮单击将第二个请求更改为另一个网页,但它也什么也没做。
所以我需要专家的帮助,如何更新获取请求并多次获得新回复。
我还想知道我做的是否正确,或者是否有比定期检查网站更可靠的方法从服务器获取数据更改数据。
最佳答案
我看到以下问题:
readyRead
每个请求触发任意次数 - 包括零次 (!),但您将其视为恰好触发一次。使用finished
信号,它会执行您想要的操作:触发一次,不多也不少。update
插槽不会将任何插槽连接到请求。
关于c++ - 多次使用 QNetworkAccessManager GET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29683368/