使用QNetworkAccessManager GET多次(using QNetworkAccess

2019-10-22 17:02发布

我写一个应用程序请求以等间隔的网页,以获得它的任何变化(以检查新数据是否被接收)。 这里怎么我做到了。

 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请求,并得到新的回复多次。

而且我想知道我在做正确的事情还是有莫可靠的方法来从服务器比检查该网站定期获取有关数据变化的数据。

Answer 1:

我看到以下几个问题:

  1. readyRead触发的每个请求任意次数- (!),包括零次,但你把它当作如果它发射一次。 使用finished的信号,这是你想要做什么:闪光一次,没有更多,不会少。

  2. 所述update插槽不任何插槽连接到该请求。



文章来源: using QNetworkAccessManager GET multiple times