我使用QWebPage
下载网页及其所有资源。与此同时,我想了解Qt在此过程中下载的原始数据。通过从QNetworkReply
中的void QNetworkAccessManager::finished(QNetworkReply * reply)
读取数据来执行此操作
信号不是一个好的解决方案,因为QWebPage
本身已经可以读取数据。这是因为
QNetworkReply是一种顺序访问 QIODevice,表示一次数据 从对象中读取,不再是 由设备保存。
根据QNetworkReply
的{{3}}。
但是QWebPage
可以配置为使用带有覆盖createRequest
方法的自定义detailed description
QNetworkReply * QNetworkAccessManager::createRequest ( Operation op, const QNetworkRequest & req, QIODevice * outgoingData = 0 )
我认为正确的解决方案是为QNetworkReply
创建代理并在createRequest
方法中返回它。此代理应该允许从原始QNetworkReply
的情况中读取回复数据(以便QWebPage
可以从中读取数据)但同时此代理应该允许其他对象读取数据在QWebPage
读完之后。换句话说,对QNetworkReply
的{{1}}基类我们需要QNetworkAccessManager
。
如何编写此代理?