私は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が必要です。
このプロキシの書き方は?
こんにちはPiotr、プロキシがまだどこかで利用可能かどうか知っていますか?リンクが壊れているようです。 – izyda
@izydaリンクは一時的に利用できないようです - *リポジトリはすぐに元のクローンURLを保存した状態で、読み取り専用で利用できるようになります。* –
入手しました。副作用として、peek()を使うよりもQtNetworkResponseをサブクラス化するほうが良いでしょうか? – izyda