Я хотел бы отправить несколько запросов POST, используя один QNetworkAccessManager
, но это работает только один раз. На второй и последующие запросы был получен пустой ответ. Я знаю, что могу использовать несколько экземпляров менеджера, но я читал, что это архитектурный недостаток. Я также нашел это: с использованием QNetworkAccessManager GET несколько раз, но я не понимаю возможное решение. Вот мой код:
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)
Основные (без учета импорта):
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()