如何更改 qtwebkit 中的 POST 数据? [英] How to change POST data in qtwebkit?
问题描述
要更改qtwebkit 中的POST 变量,需要更改或替换createRequest(...) 中的outgoingData.如何创建自己的
而不是 QFile 或 QByteArray.正是 QIODevice 对象!创建可写设备需要它.或者如何将
转换为
.
这个设备最常用于 QNetworkAccessManager:
https://orgt.gitorious/qt/webkit/source/7647fdaf9a4b526581e02fbd0e87c41a96cbfebb:src/network/access/qnetworkaccessmanager.cpp#L941
For change POST variables in qtwebkit need change or replace outgoingData in createRequest(...).
How to create own <PyQt4.QtCore.QIODevice object at 0x03BA...>
not QFile or QByteArray.
Exactly QIODevice object! It is needed for creation of writable device.
Or how to convert <PyQt4.QtCore.QBuffer object at 0x03BA...>
to <PyQt4.QtCore.QIODevice object at 0x03BA...>
.
This device most used in QNetworkAccessManager:
https://qt.gitorious.org/qt/webkit/source/7647fdaf9a4b526581e02fbd0e87c41a96cbfebb:src/network/access/qnetworkaccessmanager.cpp#L941
QNetworkReply *QNetworkAccessManager::createRequest(QNetworkAccessManager::Operation op,
const QNetworkRequest &req,
QIODevice *outgoingData)
...
更新:调用此方法后:
def createRequest(manager, operation, request, data):
if data.size() > 0:
post_body = "q=hello"
output = QtCore.QByteArray()
buffer = QtCore.QBuffer(output)
buffer.open(QtCore.QIODevice.ReadWrite)
buffer.writeData(post_body)
data = buffer
reply = QNetworkAccessManager.createRequest(manager, operation, request, data)
return reply
脚本挂断...
推荐答案
基本上你已经接近了,我想知道你为什么没有得到segmentation fault,我每次没有设置父对象时都会出现这种情况新的数据对象:
Basically you were close, I wonder why you didn't get a segmentation fault, it happened to me every time when I didn't set the parent object of the new data object:
def createRequest(manager, operation, request, data):
if data.size() > 0:
data = QBuffer(QByteArray("q=hello"))
# data was originally a ReadOnly device as well, keep it that way
data.open(QIODevice.ReadOnly)
reply = QNetworkAccessManager.createRequest(manager, operation, request, data)
# must explicitly set the parent of the newly created data object to this reply object.
data.setParent(reply)
return reply
我在这里写过这个确切的问题:https://github.com/integricho/path-of-a-pyqter/tree/master/qttut07
I wrote about this exact issue here: https://github.com/integricho/path-of-a-pyqter/tree/master/qttut07
这篇关于如何更改 qtwebkit 中的 POST 数据?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!