[英]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.