Russian Qt Forum

Qt => Работа с сетью => Тема начата: woka от Апрель 16, 2012, 15:11



Название: [РЕШЕНО] открытие сайта без отображения, не через вебВьюв
Отправлено: woka от Апрель 16, 2012, 15:11
мне нужно зайти на сайт! это всё что нужно. ничего показывать не надо. просто отправить запрос.

подскажите как лучше реализовать. можно через вебВьюв, но это сильно тяжёлая конструкция. может есть какие то более простые способы? через сокеты как я понял не получится т. к. надо чтобы на той стороне его слушали мой сокет.


Название: Re: открытие сайта без отображения, не через вебВьюв
Отправлено: GreatSnake от Апрель 16, 2012, 15:14
см. QNetworkAccessManager + QNetworkReply.


Название: Re: открытие сайта без отображения, не через вебВьюв
Отправлено: woka от Апрель 16, 2012, 19:39
Код:
QNetworkAccessManager * nam = new QNetworkAccessManager(this);
QString URLaddress("http://google.com");
QUrl url(URLaddress);
QNetworkReply* reply = nam->get(QNetworkRequest(url));
или
Код:
 manager->get(QNetworkRequest(QUrl("http://google.com")));
вроде бы и пишет что зашло, но по факту никуда не заходило. на сервере нет в логах


Название: Re: открытие сайта без отображения, не через вебВьюв
Отправлено: GreatSnake от Апрель 16, 2012, 20:15
Внимательно читаем это (http://doc.crossplatform.ru/qt/4.7.x/html-qt/qnetworkaccessmanager.html#details).
Там же обращаем внимание на это:
Цитировать
QNetworkAccessManager имеет асинхронный API. Когда слот replyFinished будет вызван, то принимаемый им параметр будет объект QNetworkReply, содержащий скачанные данные и метаданные (заголовки и т.д.).


Название: Re: открытие сайта без отображения, не через вебВьюв
Отправлено: woka от Апрель 16, 2012, 21:39
ну да, он это скачивает. но это не фиксируется как посещение страницы. и вопрос остаётся прежним. как сделать чтобы фиксировалось.


Название: Re: открытие сайта без отображения, не через вебВьюв
Отправлено: Alex Custov от Апрель 16, 2012, 22:33
ну да, он это скачивает. но это не фиксируется как посещение страницы. и вопрос остаётся прежним. как сделать чтобы фиксировалось.

Сервер умеет отличать роботов от людей, скорее всего по HTTP заголовкам. Пробуй передавать разные User-Agent через QNetworkRequest::setRawHeader()


Название: Re: открытие сайта без отображения, не через вебВьюв
Отправлено: woka от Апрель 17, 2012, 00:11
пробовал разные запросы. ничего не помогает. подскажите может у кого был опыт с этим делом. как поступить нужно


Название: Re: открытие сайта без отображения, не через вебВьюв
Отправлено: Bepec от Апрель 17, 2012, 07:27
Поставить сниффер у себя на компе и посмотреть разницу между обычным заходом на сайт и отправкой с помощью менеджера.


Название: Re: открытие сайта без отображения, не через вебВьюв
Отправлено: woka от Апрель 20, 2012, 04:08
что самое интересное это здесь не к чему. достаточно сделать запрос
Код:
    url = QUrl("http://prog.org.ru");

    reply = nam.get(QNetworkRequest(url));
и он делает всё что нужно было.  в предыдущих примерах как то неправильно был составлен запрос. потому что сразу при запуске приложение вылетало с ошибкой.  причём пример был и с документации. этот кусок кода я нарыл в примерах "http". спасибо всем