我使用以下代码发送PATCH请求:
self.sendurl = QtCore.QUrl("http://"+ server + ":" + port + "/path/" + str(i['id']))
self.rdata = {'status': 'online'}
self.rdata = json.dumps(self.rdata)
self.request = QtNetwork.QNetworkRequest()
self.manager = QtNetwork.QNetworkAccessManager()
self.request.setUrl(self.sendurl)
self.request.setHeader(0, 'application/json')
self.rdata = bytes(self.rdata, 'UTF-8')
self.data = QtCore.QByteArray(self.rdata)
self.buffer = QtCore.QBuffer()
self.buffer.open(QtCore.QBuffer.ReadWrite)
self.buffer.writeData(self.data)
self.buffer.seek(0)
self.patchbytes = bytes('PATCH', 'UTF-8')
self.patchverb = QtCore.QByteArray(self.patchbytes)
self.response = QtCore.QByteArray()
self.response = self.manager.sendCustomRequest(self.request, self.patchverb, self.buffer)
self.response = self.response.readAll().data().decode('utf-8')
self.response = str(self.response)
print(self.response)
self.response = json.loads(self.response)
正常响应包含这样的JSON对象:{'status':'online', 'request':'ok'}
。但我明白了:
我认为我发送的请求不正确,但我不明白它的错误。有人能帮助我吗?
答案 0 :(得分:0)
好的,我找到了问题的答案。我只需要等待请求完成。
此行之后
self.response = self.manager.sendCustomRequest(self.request, self.patchverb, self.buffer)
应该有这个代码:
self.loop = QtCore.QEventLoop()
self.manager.finished.connect(self.loop.exit)
self.loop.exec()