Russian Qt Forum
Ноябрь 23, 2024, 12:20 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: (РЕШЕНО) QWebView Свой Header  (Прочитано 11172 раз)
max1983
Гость
« : Август 16, 2009, 03:19 »

Простой и надежный способ получить web страничку.
Код:
QWebView view(0);
view.load(QUrl("http://google.com"));

А если надо заголовок браузера поменять?
Пробывал примерно так

Код:
webView->settings()->setAttribute(QWebSettings::AutoLoadImages, true);
webView->settings()->setAttribute(QWebSettings::JavascriptEnabled, true);

QString Connection("keep-alive");
QString AcceptLanguage("ru,en-us;q=0.7,en;q=0.3");
QString ContentLength("");
QString AcceptEncoding("gzip,deflate");

QString Accept("text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
QString AcceptCharset("windows-1251,utf-8;q=0.7,*;q=0.7");
QString KeepAlive("300");
QString UserAgent("Mozilla/5.0 (X11; U; Linux x86_64; ru; rv:1.9.0.13) Gecko/2009080317 Fedora/3.0.13-1.fc10 Firefox/3.0.13");

после

Код:
headers = QHttpRequestHeader("POST", url, 1, 1);

    //1
    headers.setValue("Connection", Connection);
    //2
    headers.setValue("Accept-Language", AcceptLanguage);
    //3
    headers.setContentLength( ba.length() );

и финал

Код:
 QByteArray  data = http->readAll();
     webView->setHtml(data);

Все работает.. Заголовок успешно....
Только вот java глючит.
Счетчики не показывают своих цифорок.

цель - замена заголовка при том чтоб страница отображалась корректно.
« Последнее редактирование: Август 16, 2009, 21:55 от max1983 » Записан
max1983
Гость
« Ответ #1 : Август 16, 2009, 15:24 »

Цитировать
Тема: QWebView Свой Header  (Прочитано 56 раз)

я так понимаю это громкое молчание свидетельствует что это не возможно?  Обеспокоенный
Записан
Rcus
Гость
« Ответ #2 : Август 16, 2009, 15:38 »

Скорее это означает что из прочитавших никто сходу не смог дать ответа на данный специфичный вопрос (у меня похожая по сути проблема была с вопросом по Qt/Embedded).

Небольшое исследование документации показывает очевидной для меня путь создания своего наследника QNetworkAccessManager и установки его на QWebPage. Но с WebKit я не работал ни разу.
Записан
BlackTass
Гость
« Ответ #3 : Август 16, 2009, 16:37 »

Попробуйте при установке хтмля в QWebView еще указывать базовый урл. Если не поможет, тогда советую идти в исходники куте и смотреть что еще делается при setUrl() помимо скачки и установки хтмля
Записан
max1983
Гость
« Ответ #4 : Август 16, 2009, 17:29 »

Попробуйте при установке хтмля в QWebView еще указывать базовый урл. Если не поможет, тогда советую идти в исходники куте и смотреть что еще делается при setUrl() помимо скачки и установки хтмля
да не.. это не поможет.
способ та топорный.
Код:
QByteArray data = http->readAll();
webView->setHtml(data);
логично что http не корректно обрабатывает всякие под запросы счетчиков.
в их java извращениях.
но ничего..
моя начальная цель надуть счетчик Показает язык
значит отступать рано.
например liveinternet.ru получается надуть только с помощью mozzila - браузера Смеющийся
хотел перенести в наглядную форму. в программу чтоб меньше щелкать мышкой.

и дополнительный вопрос по теме
почему после
Код:
connect(http, SIGNAL(responseHeaderReceived ( const QHttpResponseHeader)),this, SLOT(responseHeaderReceived ( const QHttpResponseHeader)));


перестает обрабатываться
Код:
connect(http, SIGNAL(done(bool)),this, SLOT(httpRequestDone(bool)));
данных просто нема.
хоть бери не конект слот.  Шокированный
« Последнее редактирование: Август 16, 2009, 18:18 от max1983 » Записан
sendevent
Гость
« Ответ #5 : Август 16, 2009, 18:43 »

Если под "заголовоком браузера" имеется в виду user-agent - читай про QWebPage::userAgentForUrl.

Про:
Код:
connect(http, SIGNAL(responseHeaderReceived ( const QHttpResponseHeader)),this, SLOT(responseHeaderReceived ( const QHttpResponseHeader)));
параметры передаются по ссылке:
Код:
connect(http, SIGNAL(responseHeaderReceived(const QHttpResponseHeader&)), this, SLOT(responseHeaderReceived(const QHttpResponseHeader&)));
Записан
max1983
Гость
« Ответ #6 : Август 16, 2009, 19:07 »

Цитировать
Если под "заголовоком браузера" имеется в виду user-agent
под "заголовоком браузера" имеется в виду - заголовок передоваемый браузером.  Подмигивающий

http://ru.wikipedia.org/wiki/Список_заголовков_HTTP
Записан
max1983
Гость
« Ответ #7 : Август 16, 2009, 22:00 »

И так подведем итог.

Цитировать
Только вот java глючит.
Так как в QHttp нет Редиректа - я не нашёл.
Отображаться счетчики будут криво.

но я таки нашёл способ обмануть liveinternet.ru  Строит глазки

сделал редирект в ручную
Получил - отправил куки
сохранил img
Записан
sendevent
Гость
« Ответ #8 : Август 17, 2009, 03:13 »

хм... скиллы использования педивикии уже есть, к остальному не придерешься... но так оформить вполне человеческую мысль - надо постараться Подмигивающий
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.05 секунд. Запросов: 20.