簡體   English   中英

如何找到導致 QNetworkAccessManager 實例發出完成信號的請求?

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

我的班級中有一個QNetworkAccessManager實例,我想將此實例用於多個請求,我的問題是如何找出哪個請求導致 QNetworkAccessManager 實例發出完成的信號,以便我能夠使用響應數據正確的地方,例如:

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

我的班級中有 _manager,它連接到一個插槽,如下所示:

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

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

所以,當我同時提出兩個請求時,如下所示:

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

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

那么我怎么知道上面的哪個請求發出完成的信號呢? 謝謝

我的方法是錯誤的,我可以使用來自_manager.post_manager.get的返回值,即QNetworkReply ,QNetworkReply 有一個完成的信號,您可以將您的特定插槽連接到回復值

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM