私は QtWebKit の初心者で、ページをロードした単純な Web フレーム (サーバー側) を作成し、このページからデータを送信するときに、C++ 側でサーバーからの応答文字列をキャッチしたいのですが、どうすればよいですか?
2 に答える
私はQt(私は初めてです)をいじくり回して、WebKitによってダウンロードされたすべてのリソースをキャッチする方法を見つけました。方法は次のとおりです。
1)QNetworkAccessManagerの独自のサブクラスを作成します
2)派生クラスで、仮想関数createRequestをオーバーライドします
3)基本クラスの実装を呼び出して、応答オブジェクトを取得します。その後、URL(または他のパラメーター)を調べて、その特定のリソースをキャプチャする必要があるかどうかを判断できます
4)実行する場合-readyRead信号をデータをキャプチャするスロットに接続します
5)そのスロットでpeek関数を呼び出してデータを読み取り、WebKitがデータも取得するようにします
6)QWebPageオブジェクトを作成した後、setNetworkAccessManagerを呼び出し、手順1)で新しく作成したサブクラスのインスタンスを渡します。
それだけです-お楽しみください!
QNetworkReply
クラスを使用できます。QWebPage
インスタンスには、リクエストを送信してレスポンスを受信できるインスタンス networkAccessManager()
を返すメソッドがあります。QNetworkAccessManager
finished
その信号を探す必要があります。
void QNetworkAccessManager::finished ( QNetworkReply * reply )
このシグナルは、保留中のネットワーク応答が終了するたびに送信されます。返信パラメーターには、終了したばかりの返信へのポインターが含まれます。
QNetworkReply
の継承者であるため、応答データを受信するためにQIODevice
そのメソッドを呼び出すことができます。readAll()
この質問も役に立つかもしれません。