Wie man Daten von QNetworkReply wird verwendet von QWebPage zu lesen?
-
11-10-2019 - |
Frage
Ich verwende QWebPage
eine Webseite zum Download sowie alle seine Ressourcen. Zugleich würde Ich mag halten, auf Rohdaten erhalten, indem Qt während dieses Prozesses heruntergeladen werden. Auf diese durch Daten von QNetworkReply
in void QNetworkAccessManager::finished(QNetworkReply * reply)
Signal ist keine gute Lösung, wie Daten, die bereits von QWebPage
gelesen worden sein könnten selbst. Dies liegt daran,
QNetworkReply ist ein sequenzieller Zugriff QIODevice, der, dass, sobald Daten bedeutet, , Ist es nicht von dem Objekt mehr lesen durch das Gerät gehalten wird.
detaillierter Beschreibung von QNetworkReply
.
Allerdings kann QWebPage
zu verwenden benutzerdefinierten konfiguriert werden QNetworkAccessManager
mit überschriebene createRequest
Methode
QNetworkReply * QNetworkAccessManager::createRequest ( Operation op, const QNetworkRequest & req, QIODevice * outgoingData = 0 )
ich glaube, die richtige Lösung einen Proxy für QNetworkReply
zu schaffen wäre und es in der createRequest
Methode zurückzukehren. Dieser Proxy soll zum Lesen von Daten aus Antwort ermöglichen, wie der Fall mit dem Original QNetworkReply
ist (so dass QWebPage
Daten daraus lesen konnte), aber zugleich sollte diese Proxy erlaubt Daten von anderen Objekten zu lesen, nachdem sie von QWebPage
gelesen wurde. Mit anderen Worten: Wir müssen tee QNetworkReply
Basisklasse IODevice
.
Wie dieses Proxy schreiben?
Lösung
Es sieht aus wie jemand bereits die gleiche wollte und schrieb ein Proxy für den QNetworkReply .