Pregunta

QWebPage para descargar una página web, así como todos sus recursos. Al mismo tiempo, me gustaría conseguir el asimiento de los datos en bruto que había sido descargado por Qt durante este proceso. Hacer esto mediante la lectura de los datos de QNetworkReply en void QNetworkAccessManager::finished(QNetworkReply * reply) señal no es una buena solución ya que los datos podrían haber sido ya leído por QWebPage sí. Esto se debe a

QNetworkReply es una secuencia de acceso QIODevice, lo que significa que una vez que los datos se lee desde el objeto, ya no mantenido por el dispositivo.

según Descripción detallada de QNetworkReply.

Sin embargo QWebPage se puede configurar para su uso a medida QNetworkAccessManager con overriden createRequest método

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

Creo que la mejor solución sería crear un proxy para QNetworkReply y devolverlo en el método createRequest. Este proxy debe permitir la lectura de datos de respuesta como es el caso de la QNetworkReply originales (de modo que QWebPage podía leer datos de él), pero al mismo tiempo este proxy debe permitir la lectura de los datos por parte de otros objetos después de haber sido leído por QWebPage. En otras palabras, necesitamos camiseta de clase base QNetworkReply de IODevice.

Cómo escribir este proxy?

¿Fue útil?

Solución

Parece que alguien ya ha querido la misma y escribió un proxy para el QNetworkReply .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top