QNetworkAccessManager:将响应与请求相关联
QNetworkAccessManager: Associate response with request
我尝试对 REST 服务执行简单的 GET 操作,并想知道如何将请求 identify/associate 发送到我在 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")));
简短回答:回复提供 returns 请求的功能: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 ) {}
我尝试对 REST 服务执行简单的 GET 操作,并想知道如何将请求 identify/associate 发送到我在 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")));
简短回答:回复提供 returns 请求的功能: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 ) {}