こんにちは、私は pyqt4 を使用しています。私の QWebPage/QWebView の QtWebKit リクエストを使用して、任意の POST リクエストを作成したいと考えています。私の理解を広く見てみると、createRequest()
メソッドをオーバーライドして networkaccessmanager をサブクラス化する必要があるということです。
createRequest の 4 番目のパラメーターを使用して、送信される POST 要求 (以下のコードを参照) のデータを抽出できる例を見ましたが、私の質問は、createRequest の同じデータ変数を設定して、カスタム POST データを送信する方法です。 「クエリ=myvalue」のような?
どうやら data は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_()