Я использую QWebPage
для загрузки веб-страницы, а также всех ее ресурсов. В то же время я хотел бы сохранить необработанные данные, загружаемые Qt во время этого процесса. Выполнение этого путем чтения данных из QNetworkReply
в void QNetworkAccessManager :: finished (QNetworkReply * reply)
сигнал не является хорошим решением, поскольку данные могли быть уже прочитаны QWebPage
сам.
QIODevice, что означает, что когда-то данные
читается из объекта, он больше не
хранится на устройстве.
согласно подробному описанию из QNetworkReply
.
Однако QWebPage
можно настроить для использования пользовательского QNetworkAccessManager
с переопределенным методом createRequest
QNetworkReply * QNetworkAccessManager::createRequest ( Operation op, const QNetworkRequest & req, QIODevice * outgoingData = 0 )
Я думаю, что правильным решением было бы создать прокси для QNetworkReply
и вернуть его в методе createRequest
. Этот прокси-сервер должен позволять считывать данные из ответа, как в случае с исходным QNetworkReply
(чтобы QWebPage
мог читать из него данные), но в то же время этот прокси-сервер должен разрешать чтение данные другими объектами после того, как они были прочитаны QWebPage
. Другими словами, нам понадобится тройник для QNetworkReply
' s Базовый класс IODevice
.
Как написать этот прокси?