如何读取QWEBPAGE使用的Qnetworkreply的数据?
-
11-10-2019 - |
题
我用 QWebPage
下载网页以及所有资源。同时,我想保留在此过程中QT下载的原始数据。通过阅读数据来做到这一点 QNetworkReply
在 void QNetworkAccessManager::finished(QNetworkReply * reply)
信号不是一个好的解决方案,因为数据本可以通过 QWebPage
本身。这是因为
Qnetworkreply是一个顺序访问QIODEVICE,这意味着一旦从对象读取数据,设备就不再保留。
根据 详细说明 的 QNetworkReply
.
然而 QWebPage
可以配置为使用自定义 QNetworkAccessManager
与Overriden createRequest
方法
QNetworkReply * QNetworkAccessManager::createRequest ( Operation op, const QNetworkRequest & req, QIODevice * outgoingData = 0 )
我认为正确的解决方案是创建一个代理 QNetworkReply
并将其归还 createRequest
方法。此代理应允许从回复中读取数据,就像原始的情况一样 QNetworkReply
(以便 QWebPage
可以从中读取数据),但与此同时,该代理应允许其他对象读取数据的数据 QWebPage
. 。换句话说,我们需要 球座 为了 QNetworkReply
' IODevice
基类。
如何写这个代理?
解决方案
看来有人已经想要同样的东西并写了 Qnetworkreply的代理.
不隶属于 StackOverflow