如何从一个QNetworkAccessManager发送回复

How to dispatch replies from one QNetworkAccessManager?

本文关键字:QNetworkAccessManager 一个 回复      更新时间:2023-10-16

Qt文档说每个应用程序将使用一个QNetworkAccessManager

一个QNetworkAccessManager应该足以满足整个Qt的需求。 应用。

但是,我访问多个 Web 服务,并且需要调用单个函数来解析每个服务:

由于我只有一个QNetworkAccessManager::finished(QNetworkReply * reply)信号,将回复分派给其单个解析函数的最佳方法是什么?

创建请求时,我可以连接到每个QNetworkReply对象的finished信号:

QNetworkReply * QNetworkAccessManager::get(const QNetworkRequest & request)

但是,这是连接到只会使用一次的信号(性能)的最佳方式吗?有没有更好的方法?


相关问题:

  1. 在Qt应用程序中共享cookie的最佳方式
  2. "停止/关闭"QNetworkAccessManager的正确方法是什么?
  3. QNetworkAccessManager 从不同的线程获取/发布可能吗?

您可以使用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(...);
}
相关文章:
  • 没有找到相关文章