Как читать данные из QNetworkReply, используемые QWebPage?

Я использую 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 .

Как написать этот прокси?

5
задан Piotr Dobrogost 26 October 2012 в 16:27
поделиться