嗨我正在使用pyqt4,我想要做的是通过使用QWebPage/QWebView的QtWebKit请求来制作任意的POST请求。通过广泛地了解我的理解,我必须通过重写createRequest()
方法来继承networkaccessmanager。使用QWebView请求的POST请求
我看到一个例子,它允许使用createRequest的第四个参数来提取发送的POST请求(见下面的代码)的数据,但我的问题是如何设置createRequest的相同数据变量来发送自定义POST数据,如“query = myvalue”?
显然数据是一个QIODevice
变量:我尝试了很多不同的方式来设置它,但不能让它工作,并总是以python抱怨它是一个意外的值。我在这里错过了什么吗?任何人都在意分享一个有效的代码样本?
import sys
from PySide.QtCore import *
from PySide.QtGui import QApplication
from PySide.QtWebKit import QWebView, QWebPage
from PySide.QtNetwork import QNetworkAccessManager
html = ''' <html> <body>
<form action="http://www.google.com" method="post"><input type="text" name="test" /><input type="submit" value="submit"/></form>
</body> </html> '''
class Browser(object):
def __init__(self):
self.network_manager = QNetworkAccessManager()
self.network_manager.createRequest = self._create_request
self.web_page = QWebPage()
self.web_page.setNetworkAccessManager(self.network_manager)
self.web_view = QWebView()
self.web_view.setPage(self.web_page)
self.html_data = None
def _create_request(self, operation, request, data):
# data contains all the post data that is being added to the request
# so you can look into it here
print data.readAll()
reply = QNetworkAccessManager.createRequest(self.network_manager,
operation,
request,
data)
return reply
if __name__ == '__main__':
app = QApplication(sys.argv)
browser = Browser()
frame = browser.web_page.mainFrame()
browser.web_view.setHtml(html)
browser.web_view.show()
app.exec_()
你想发送一个完全地新的POST请求或修改的参数现有的一个在飞行? – alexisdm
为了知识的缘故,我很想知道如何修改现有参数,现在我知道如何发送全新的请求。随时在这里发布,我找不到任何具体的帮助,所以我相信它会让别人受益。干杯。 –