Russian Qt Forum

Qt => Работа с сетью => Тема начата: max1983 от Август 16, 2009, 03:19



Название: (РЕШЕНО) QWebView Свой Header
Отправлено: 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 глючит.
Счетчики не показывают своих цифорок.

цель - замена заголовка при том чтоб страница отображалась корректно.


Название: Re: QWebView Свой Header
Отправлено: max1983 от Август 16, 2009, 15:24
Цитировать
Тема: QWebView Свой Header  (Прочитано 56 раз)

я так понимаю это громкое молчание свидетельствует что это не возможно?  :-[


Название: Re: QWebView Свой Header
Отправлено: Rcus от Август 16, 2009, 15:38
Скорее это означает что из прочитавших никто сходу не смог дать ответа на данный специфичный вопрос (у меня похожая по сути проблема была с вопросом по Qt/Embedded).

Небольшое исследование документации показывает очевидной для меня путь создания своего наследника QNetworkAccessManager и установки его на QWebPage. Но с WebKit я не работал ни разу.


Название: Re: QWebView Свой Header
Отправлено: BlackTass от Август 16, 2009, 16:37
Попробуйте при установке хтмля в QWebView еще указывать базовый урл. Если не поможет, тогда советую идти в исходники куте и смотреть что еще делается при setUrl() помимо скачки и установки хтмля


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

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


перестает обрабатываться
Код:
connect(http, SIGNAL(done(bool)),this, SLOT(httpRequestDone(bool)));
данных просто нема.
хоть бери не конект слот.  :o


Название: Re: QWebView Свой Header
Отправлено: sendevent от Август 16, 2009, 18:43
Если под "заголовоком браузера" имеется в виду user-agent - читай про QWebPage::userAgentForUrl (http://doc.trolltech.com/4.5/qwebpage.html#userAgentForUrl).

Про:
Код:
connect(http, SIGNAL(responseHeaderReceived ( const QHttpResponseHeader)),this, SLOT(responseHeaderReceived ( const QHttpResponseHeader)));
параметры передаются по ссылке:
Код:
connect(http, SIGNAL(responseHeaderReceived(const QHttpResponseHeader&)), this, SLOT(responseHeaderReceived(const QHttpResponseHeader&)));


Название: Re: QWebView Свой Header
Отправлено: max1983 от Август 16, 2009, 19:07
Цитировать
Если под "заголовоком браузера" имеется в виду user-agent
под "заголовоком браузера" имеется в виду - заголовок передоваемый браузером.  ;)

http://ru.wikipedia.org/wiki/Список_заголовков_HTTP (http://ru.wikipedia.org/wiki/Список_заголовков_HTTP)


Название: Re: (РЕШЕНО) QWebView Свой Header
Отправлено: max1983 от Август 16, 2009, 22:00
И так подведем итог.

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

но я таки нашёл способ обмануть liveinternet.ru  ::)

сделал редирект в ручную
Получил - отправил куки
сохранил img


Название: Re: (РЕШЕНО) QWebView Свой Header
Отправлено: sendevent от Август 17, 2009, 03:13
хм... скиллы использования педивикии уже есть, к остальному не придерешься... но так оформить вполне человеческую мысль - надо постараться ;)