Отправка пользовательского заголовка вместе с запросом qtwebkit

Я работаю с PyQt4 и QtWebKit, и в запросе веб-страницы необходимо отправить собственный заголовок «Хост» вместе со стандартным HTTP-запросом. Я не вижу никаких вариантов добавления пользовательских заголовков в запрос, но это все новое для меня, поэтому я надеюсь, что что-то упустил. Я смотрю здесь:

http://doc.qt.digia.com/4.6/qwebsettings.html

Мы будем очень признательны за любые советы.


person lennysan    schedule 07.09.2010    source источник


Ответы (2)


Вы можете установить заголовки для отправляемого QNetworkRequest:

QNetworkRequest request;
request.setUrl(QUrl("http://qt.nokia.com"));
request.setRawHeader("User-Agent", "MyOwnBrowser 1.0");

Чтобы использовать этот пользовательский запрос при загрузке страницы, используйте перегруженную load функция:

myWebView->load(request);
person Kaleb Pederson    schedule 07.09.2010
comment
Отменяет ли это все заголовки по умолчанию или просто добавляет и заменяет существующие заголовки? - person lennysan; 08.09.2010
comment
Есть идеи, почему он зависает, когда я использую Host: mysite.com, но отлично работает, когда я использую Host: www.mysite.com? Я бы ожидал, что веб-сервер ответит в любом случае, но в первом случае вызов просто остается там на неопределенный срок. - person lennysan; 08.09.2010
comment
Это поведение зависит от используемого веб-сервера. Когда сервер поддерживает несколько (виртуальных) хостов, он должен использовать заголовок host, чтобы определить, на какой виртуальный хост следует отправить запрос. - person Kaleb Pederson; 08.09.2010
comment
Я использую веб-приложение, которое может разрешить определенный пользовательский агент, а также мой код и пользовательский агент никакого эффекта не показывает.. - person tbhaxor; 28.03.2019

Если вы хотите применить это ко всем всем запросам, которые делает QtWebKit, вы можете создать подкласс QNetworkAccessManager и повторно реализовать его функцию createRequest(), чтобы соответствующим образом изменить заголовки.

person kralyk    schedule 23.03.2012
comment
Не могли бы вы рассказать, как это можно реализовать, если createRequest() принимает QNetworkRequest по константной ссылке? Насколько я могу себе представить, следует вызывать setHeader() или setRawHeader() соответствующего QNetworkRequest. - person NuPagadi; 02.12.2016