как получить ответ в QtWebKit - PullRequest
7 голосов
/ 11 марта 2010

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

Ответы [ 2 ]

8 голосов
/ 12 мая 2010

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

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

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

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

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

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

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

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

1 голос
/ 16 марта 2010

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

Вам нужно найти его finished сигнал.

void QNetworkAccessManager::finished ( QNetworkReply * reply )

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

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

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

...