7

私は QtWebKit の初心者で、ページをロードした単純な Web フレーム (サーバー側) を作成し、このページからデータを送信するときに、C++ 側でサーバーからの応答文字列をキャッチしたいのですが、どうすればよいですか?

4

2 に答える 2

8

私はQt(私は初めてです)をいじくり回して、WebKitによってダウンロードされたすべてのリソースをキャッチする方法を見つけました。方法は次のとおりです。

1)QNetworkAccessManagerの独自のサブクラスを作成します

2)派生クラスで、仮想関数createRequestをオーバーライドします

3)基本クラスの実装を呼び出して、応答オブジェクトを取得します。その後、URL(または他のパラメーター)を調べて、その特定のリソースをキャプチャする必要があるかどうかを判断できます

4)実行する場合-readyRead信号をデータをキャプチャするスロットに接続します

5)そのスロットでpeek関数を呼び出してデータを読み取り、WebKitがデータも取得するようにします

6)QWebPageオブジェクトを作成した後、setNetworkAccessManagerを呼び出し、手順1)で新しく作成したサブクラスのインスタンスを渡します。

それだけです-お楽しみください!

于 2010-05-12T07:46:28.713 に答える
1

QNetworkReplyクラスを使用できます。QWebPageインスタンスには、リクエストを送信してレスポンスを受信できるインスタンス networkAccessManager()を返すメソッドがあります。QNetworkAccessManager

finishedその信号を探す必要があります。

void QNetworkAccessManager::finished ( QNetworkReply * reply )

このシグナルは、保留中のネットワーク応答が終了するたびに送信されます。返信パラメーターには、終了したばかりの返信へのポインターが含まれます。

QNetworkReplyの継承者であるため、応答データを受信するためにQIODeviceそのメソッドを呼び出すことができます。readAll()

この質問も役に立つかもしれません。

于 2010-03-16T00:49:58.997 に答える