如何从一个 QNetworkAccessManager 发送回复?
How to dispatch replies from one QNetworkAccessManager?
Qt documentation says 每个应用程序要使用一个 QNetworkAccessManager
:
One QNetworkAccessManager should be enough for the whole Qt
application.
但是,我访问多个 Web 服务并且需要调用单独的函数来解析每个:
由于我只有 一个 QNetworkAccessManager::finished(QNetworkReply * reply)
信号,将回复分派给其单独的解析函数的最佳方式是什么?
创建请求时,我可以连接到每个 QNetworkReply
对象的 finished
信号:
QNetworkReply * QNetworkAccessManager::get(const QNetworkRequest & request)
但这是连接到只使用一次的信号(性能)的最佳方式吗?有没有更好的方法?
相关自己的问题:
您可以使用 QNetworkRequest::setOriginatingObject(QObject * object)
方法将原始对象的引用附加到请求。
假设我们有两个对象发出网络请求。在这种情况下,您可以使用以下代码来区分回复。
QNetworkRequest *req1 = new QNetworkRequest();
req1->setOriginatingObject(sender1);
networkAccessManager->get(req1);
QNetworkRequest *req2 = new QNetworkRequest();
req2->setOriginatingObject(sender2);
networkAccessManager->get(req2);
在你的位置上:
if(reply->request().originatingObject() == sender1){
sender1->handle(...);
}
if(reply->request().originatingObject() == sender2){
sender2->handle(...);
}
Qt documentation says 每个应用程序要使用一个 QNetworkAccessManager
:
One QNetworkAccessManager should be enough for the whole Qt application.
但是,我访问多个 Web 服务并且需要调用单独的函数来解析每个:
由于我只有 一个 QNetworkAccessManager::finished(QNetworkReply * reply)
信号,将回复分派给其单独的解析函数的最佳方式是什么?
创建请求时,我可以连接到每个 QNetworkReply
对象的 finished
信号:
QNetworkReply * QNetworkAccessManager::get(const QNetworkRequest & request)
但这是连接到只使用一次的信号(性能)的最佳方式吗?有没有更好的方法?
相关自己的问题:
您可以使用 QNetworkRequest::setOriginatingObject(QObject * object)
方法将原始对象的引用附加到请求。
假设我们有两个对象发出网络请求。在这种情况下,您可以使用以下代码来区分回复。
QNetworkRequest *req1 = new QNetworkRequest();
req1->setOriginatingObject(sender1);
networkAccessManager->get(req1);
QNetworkRequest *req2 = new QNetworkRequest();
req2->setOriginatingObject(sender2);
networkAccessManager->get(req2);
在你的位置上:
if(reply->request().originatingObject() == sender1){
sender1->handle(...);
}
if(reply->request().originatingObject() == sender2){
sender2->handle(...);
}