使用QNetworkAccessManager qt的多个请求

使用QNetworkAccessManager qt的多个请求,qt,pyqt,pyqt5,qtnetwork,Qt,Pyqt,Pyqt5,Qtnetwork,我想使用单个QNetworkAccessManager发送多个POST请求,但它只能工作一次。第二次和进一步的请求得到了一个空的答复。 我知道我可以使用多个manager实例,但我了解到,这是一个架构缺陷。 我也发现了这一点:,但我不明白最终的解决办法。 这是我的密码: class Networker(QObject): gotResponse = pyqtSignal(str) def proc(self, reply): s = bytes(reply.r

我想使用单个
QNetworkAccessManager
发送多个POST请求,但它只能工作一次。第二次和进一步的请求得到了一个空的答复。 我知道我可以使用多个manager实例,但我了解到,这是一个架构缺陷。 我也发现了这一点:,但我不明白最终的解决办法。 这是我的密码:

class Networker(QObject):

    gotResponse = pyqtSignal(str)

    def proc(self, reply):
        s = bytes(reply.readAll()).decode('utf-8')
        self.gotResponse.emit(s)


    def __init__(self, parent=None):
        super(Networker, self).__init__(parent)
        self.manager = QNetworkAccessManager()



    def send(self):
        req = QNetworkRequest(QUrl("http://127.0.0.1:8000/"))
        req.setHeader(QNetworkRequest.ContentTypeHeader, "text/json;charset=utf-8")

        data = QByteArray('{"id":1}')

        self.manager.finished.connect(self.proc)
        self.manager.post(req, data)
主要(不包括进口):


这不是演示问题的完整测试用例。请说明如何调用这些多个请求。我们需要看到一个完整的程序,而不仅仅是一个片段。使用QNetworkReply是最佳的解决方案。正如你提到的那篇文章中所详述的。我想我使用QNetworkReply的方式与引用文章中使用的方式相同。实际上,我不打算使用任何信号,但是我在获取异步回复时遇到了一个问题。这不是一个完整的测试用例来演示这个问题。请说明如何调用这些多个请求。我们需要看到一个完整的程序,而不仅仅是一个片段。使用QNetworkReply是最佳的解决方案。正如你提到的那篇文章中所详述的。我想我使用QNetworkReply的方式与引用文章中使用的方式相同。实际上,我打算不使用任何信号,但在获取异步回复时遇到了一个问题。
def main():

    app = QtWidgets.QApplication(sys.argv)

    n = Networker(app)
    w = QtWidgets.QWidget()


    w.setWindowTitle("main")

    layout = QBoxLayout(QBoxLayout.LeftToRight, w)

    l1 = QTextEdit("Result", w)
    l1.resize(300, 600)
    n.gotResponse.connect(l1.setText)
    layout.addWidget(l1)
    w.show()

    l2 = QTextEdit("Idle", w)
    l2.resize(250, 600)

    layout.addWidget(l2)
    w.resize(500, 600)

    btn = QPushButton("Send", w)
    layout.addWidget(btn)   
    btn.clicked.connect(n.send)         
    w.show()





    sys.exit(app.exec_())


if __name__ == '__main__':
    main()