5

QWebPage用来下载网页及其所有资源。同时,我想掌握 Qt 在此过程中下载的原始数据。QNetworkReply通过从in信号中读取数据来做到这void QNetworkAccessManager::finished(QNetworkReply * reply) 一点并不是一个好的解决方案,因为数据本身可能已经被读取QWebPage。这是因为

QNetworkReply 是一个顺序访问的 QIODevice,这意味着一旦从对象中读取数据,它就不再由设备保存。

根据详细QNetworkReply描述。

但是QWebPage可以配置为使用QNetworkAccessManager带有覆盖createRequest方法的自定义

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

我认为正确的解决方案是创建一个代理并在方法QNetworkReply中返回它。createRequest该代理应该允许从回复中读取数据,就像原始的情况一样QNetworkReply(以便QWebPage可以从中读取数据),但同时该代理应该允许在其他对象读取数据后读取数据QWebPage。换句话说,我们需要tee作为QNetworkReplyIODevice类。

这个代理怎么写?

4

1 回答 1

4

看起来有人已经想要同样的东西并为 QNetworkReply 编写了一个代理

于 2011-01-01T19:10:45.990 回答