嗨我正在使用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
爲了知識的緣故,我很想知道如何修改現有參數,現在我知道如何發送全新的請求。隨時在這裏發佈,我找不到任何具體的幫助,所以我相信它會讓別人受益。乾杯。 –