QNetworkAccessManager:将响应与请求关联



我尝试对REST服务进行简单的GET,并想知道如何将请求与SLOT函数中得到的响应识别/关联。例如,我可能会向同一个管理器发送多个请求,并希望传递一个messageID,以便在SLOT函数中读取该ID,从而将响应与负责的请求关联起来。

有什么办法吗?

QNetworkAccessManager manager = new QNetworkAccessManager(this);
connect(manager, SIGNAL(finished(QNetworkReply)),
this, SLOT(replyFinished(QNetworkReply*)));
manager->get(QNetworkRequest(QUrl("http://qt-project.org")));

简短的回答:回复提供了一个返回请求的函数:QNetworkReply::request()。。。

下次请先检查文档。

编辑:
如果你需要更多的数据,你有各种各样的方法。例如,您可以将数据作为动态属性添加到请求中(请参见QObject::setProperty),或者将QNetworkAccessManager::get函数返回的QNetworkReply与所需的数据一起存储在QHash中。

您可以使用c++11绑定:

QNetworkAccessManager manager = new QNetworkAccessManager(this);
connect(manager, SIGNAL(finished(QNetworkReply)), this, 
SLOT(replyFinished(QNetworkReply*)));
QNetworkRequest *request = new QNetworkRequest(QUrl("http://qt-project.org"));
QNetworkReply *reply = manager->get(request );
QObject::connect(reply, &QNetworkReply::finished, std::bind(&YOURCLASS::onGetFinished, this, reply, request));
void YOURCLASS::onGetFinished( QNetworkReply* reply, QNetworkRequest* request ) {}

相关内容

  • 没有找到相关文章

最新更新