Comment lire les données de QNetworkReply utilisées par QWebPage?
-
11-10-2019 - |
Question
J'utiliser QWebPage
pour télécharger une page Web, ainsi que toutes ses ressources. En même temps, je voudrais mettre la main sur les données brutes téléchargées par Qt au cours de ce processus. Faire cela en lisant les données de QNetworkReply
void QNetworkAccessManager::finished(QNetworkReply * reply)
signal n'est pas une bonne solution que les données auraient pu être déjà lu par QWebPage
lui-même. En effet,
QNetworkReply est un accès séquentiel QIODevice, ce qui signifie qu'une fois que les données est lu à partir de l'objet, il ne maintenu par le dispositif.
description détaillée de QNetworkReply
.
Cependant QWebPage
peut être configuré pour utiliser personnalisée QNetworkAccessManager
avec méthode surchargée createRequest
QNetworkReply * QNetworkAccessManager::createRequest ( Operation op, const QNetworkRequest & req, QIODevice * outgoingData = 0 )
Je pense que la bonne solution serait de créer un proxy pour QNetworkReply
et le retourner dans la méthode createRequest
. Cette procuration doit permettre la lecture des données de réponse comme est le cas avec le QNetworkReply
d'origine (de sorte que QWebPage
pouvait lire les données), mais en même temps, cette procuration doit permettre la lecture des données par d'autres objets après avoir été lu par QWebPage
. En d'autres termes nous avons besoin pour la classe de base QNetworkReply
de IODevice
.
Comment écrire cette procuration?
La solution
On dirait que quelqu'un a déjà voulu la même chose et écrit un proxy pour QNetworkReply.