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?

Était-ce utile?

La solution

On dirait que quelqu'un a déjà voulu la même chose et écrit un proxy pour QNetworkReply.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top