如何从一个 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(...);
}