我使用 QWebPage
下载网页及其所有资源。同时,我想掌握Qt在此过程中下载的原始数据。通过从 QNetworkReply
中的 void QNetworkAccessManager::finished(QNetworkReply * reply)
读取数据来执行此操作
signal不是一个好的解决方案,因为QWebPage
本身已经可以读取数据。这是因为
根据QNetworkReply
的detailed description。
但是,可以将QWebPage
配置为使用带有覆盖的QNetworkAccessManager
方法的自定义 createRequest
QNetworkReply * QNetworkAccessManager::createRequest ( Operation op, const QNetworkRequest & req, QIODevice * outgoingData = 0 )
我认为正确的解决方案是为
QNetworkReply
创建一个代理,并在createRequest
方法中将其返回。该代理应允许从答复中读取数据,就像原始QNetworkReply
一样(以便QWebPage
可以从中读取数据),但与此同时,此代理应允许QWebPage
读取其他对象后再读取数据。换句话说,我们需要tee作为QNetworkReply
的IODevice
基类。如何编写此代理?
最佳答案
好像有人已经想要相同的东西,并写了a proxy for the QNetworkReply。
关于qt - 如何从QWebPage正在使用的QNetworkReply中读取数据?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4475647/