Я - новичок с QtWebKit, я создаю простой веб-кадр, который загрузил страницу (сторона сервера) и когда от этой страницы я отправляю данные, мне нравится ловить строку ответа с сервера в стороне C++, как я могу сделать это?
Вы можете использовать для этого класс QNetworkReply
. Экземпляры QWebPage
имеют метод networkAccessManager ()
, который возвращает экземпляр QNetworkAccessManager
, способный отправлять запросы и получать ответы.
Вам нужно найти его сигнал завершено
.
void QNetworkAccessManager :: finished (QNetworkReply * reply)
Этот сигнал выдается всякий раз, когда завершается ожидающий сетевой ответ . Параметр ответа будет содержать указатель на только что завершившийся ответ.
QNetworkReply
, в свою очередь, является наследником QIODevice
, поэтому вы можете вызвать его метод readAll ()
для получения данных ответа.
Вы также можете найти этот вопрос полезным.
Я повозился с Qt (в котором я новичок) и нашел способ поймать все ресурсы, загружаемые WebKit. Вот как:
1) Создайте свой собственный подкласс QNetworkAccessManager
2) В производном классе переопределите виртуальную функцию createRequest
3) Вызовите реализацию базового класса, чтобы получить объект ответа. После этого вы можете посмотреть на URL (или другие параметры) и определить, нужно ли вам захватывать этот конкретный ресурс или нет
4), если вы это делаете - подключите сигнал readyRead к некоторому слоту, который будет захватывать данные
5) в этом слоте вызовите функцию просмотра для чтения данных, чтобы WebKit также получил данные
6) После создания объекта QWebPage вызовите setNetworkAccessManager и передайте вновь созданный экземпляр вашего подкласса из шага 1)
Вот и все - наслаждайтесь!