简体   繁体   English

如何找到导致 QNetworkAccessManager 实例发出完成信号的请求?

[英]How to find what request causes QNetworkAccessManager instance to emit finished signal?

I have a QNetworkAccessManager instance in my class, I want to use this instance with multiple requests, and my question is How can I find out which request causes the QNetworkAccessManager instance to emit finished signal, so I would be able to use the response data in the right place, for example:我的班级中有一个QNetworkAccessManager实例,我想将此实例用于多个请求,我的问题是如何找出哪个请求导致 QNetworkAccessManager 实例发出完成的信号,以便我能够使用响应数据正确的地方,例如:

def __init__(self, parent=None):
    super().__init__(parent=parent)
    RequestManager._manager = QNetworkAccessManager(parent)

I have the _manager in my class, it is connected to a slot as follow:我的班级中有 _manager,它连接到一个插槽,如下所示:

self._manager.finished[QNetworkReply].connect(self.getreply)

and getreply is: getreply 是:

@Slot(QNetworkReply)
def getreply(self, reply):
    status_code = reply.attribute(
        QNetworkRequest.HttpStatusCodeAttribute) or 0

    if 200 <= status_code < 300:
        if reply.error() == QNetworkReply.NoError:
            l_data = json.loads(
                reply.readAll().data().decode())["data"]["items"]
            self.removeRows(0, 0, None)
            self.insertRows(
                self.rowCount(),
                len(l_data) - 1,
                QtCore.QModelIndex(),
                l_data
            )
            self.dataFetch.emit(True)
        else:
            pass

so, when I made two requests at the same time like below:所以,当我同时提出两个请求时,如下所示:

    self._manager.get(
        QNetworkRequest(
            QUrl(
                server_addr + "products/"
                )
        )
    )

    self._manager.get(
        QNetworkRequest(
            QUrl(
                server_addr + "users/"
                )
        )
    )

then how should i know that which of the above requests emit the finished signal?那么我怎么知道上面的哪个请求发出完成的信号呢? Thank you谢谢

我的方法是错误的,我可以使用来自_manager.post_manager.get的返回值,即QNetworkReply ,QNetworkReply 有一个完成的信号,您可以将您的特定插槽连接到回复值

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM