как получить ответ в QtWebKit

Я - новичок с QtWebKit, я создаю простой веб-кадр, который загрузил страницу (сторона сервера) и когда от этой страницы я отправляю данные, мне нравится ловить строку ответа с сервера в стороне C++, как я могу сделать это?

7
задан user63898 11 March 2010 в 15:10
поделиться

2 ответа

Вы можете использовать для этого класс QNetworkReply . Экземпляры QWebPage имеют метод networkAccessManager () , который возвращает экземпляр QNetworkAccessManager , способный отправлять запросы и получать ответы.

Вам нужно найти его сигнал завершено .

void QNetworkAccessManager :: finished (QNetworkReply * reply)

Этот сигнал выдается всякий раз, когда завершается ожидающий сетевой ответ . Параметр ответа будет содержать указатель на только что завершившийся ответ.

QNetworkReply , в свою очередь, является наследником QIODevice , поэтому вы можете вызвать его метод readAll () для получения данных ответа.

Вы также можете найти этот вопрос полезным.

1
ответ дан 7 December 2019 в 03:14
поделиться

Я повозился с Qt (в котором я новичок) и нашел способ поймать все ресурсы, загружаемые WebKit. Вот как:

1) Создайте свой собственный подкласс QNetworkAccessManager

2) В производном классе переопределите виртуальную функцию createRequest

3) Вызовите реализацию базового класса, чтобы получить объект ответа. После этого вы можете посмотреть на URL (или другие параметры) и определить, нужно ли вам захватывать этот конкретный ресурс или нет

4), если вы это делаете - подключите сигнал readyRead к некоторому слоту, который будет захватывать данные

5) в этом слоте вызовите функцию просмотра для чтения данных, чтобы WebKit также получил данные

6) После создания объекта QWebPage вызовите setNetworkAccessManager и передайте вновь созданный экземпляр вашего подкласса из шага 1)

Вот и все - наслаждайтесь!

8
ответ дан 7 December 2019 в 03:14
поделиться