2010-12-17 17 views
5

私はQWebPageを使ってウェブページとそのすべてのリソースをダウンロードしています。同時に、私はこのプロセス中にQtによってダウンロードされている生データを保持したいと思います。これは、QWebPageによってすでに読み取られている可能性があるため、QNetworkReplyのデータをvoid QNetworkAccessManager::finished(QNetworkReply * reply) の信号で読み取ることによっては解決できません。 QNetworkReplyは、データが は、物体側から読み出されると、それはもはや デバイスが保持していることを意味しないシーケンシャルアクセス のQIODevice、あるQWebPageが使用しているQNetworkReplyからデータを読み取る方法は?

ためです。

detailed descriptionQNetworkReplyによる。

しかしQWebPageは、カスタムQNetworkAccessManager私は右のソリューションはQNetworkReplyのプロキシを作成し、createRequest方法でそれを返すようになると思いオーバーライドcreateRequest方法

QNetworkReply * QNetworkAccessManager::createRequest (Operation op, const QNetworkRequest & req, QIODevice * outgoingData = 0) 

とを使用するように設定することができます。このプロキシは、元のQNetworkReplyの場合のように返信からデータを読み取ることができますが(QWebPageはそこからデータを読み取ることができます)、同時にこのプロキシはQWebPageによって読み取られた後に他のオブジェクトによるデータの読み取りを許可する必要があります。言い換えれば、QNetworkReplyのベースクラスにはteeが必要です。

このプロキシの書き方は?

答えて

4

誰かが既に同じものを望んでいて、a proxy for the QNetworkReplyと書いているようです。

+0

こんにちはPiotr、プロキシがまだどこかで利用可能かどうか知っていますか?リンクが壊れているようです。 – izyda

+1

@izydaリンクは一時的に利用できないようです - *リポジトリはすぐに元のクローンURLを保存した状態で、読み取り専用で利用できるようになります。* –

+0

入手しました。副作用として、peek()を使うよりもQtNetworkResponseをサブクラス化するほうが良いでしょうか? – izyda

関連する問題