Russian Qt Forum
Май 18, 2012, 19:12
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Работа с сетью
(Модератор:
Sergeich
) >
Yandex не отвечает
Страниц: [
1
]
2
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Yandex не отвечает (Прочитано 1498 раз)
vbi
Чайник
Offline
Сообщений: 88
Yandex не отвечает
«
:
Август 17, 2011, 11:25 »
Написал програмку, которая посылает GET запрос на "
www.yandex.ru
", который по идее должен возвратить содержание страницы, но вместо этого возвращает пустую строку.
Если послать get запрос на "yandex.ru", то яндекс возвращает страницу "302 Moved Permanently" и перенаправляет на "
www.yandex.ru
", а тот в свою очередь возвращает пустую строку.
Как с ним бороться, может какие-то уникальные заголовки передать?
Код программы:
.h
Код:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QtNetwork/QNetworkAccessManager>
#include <QUrl>
#include <QtNetwork/QNetworkRequest>
#include <QtNetwork/QNetworkReply>
#include <QDebug>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
private slots:
void on_pushButton_clicked();
void searshFinished(QNetworkReply*);
};
#endif // MAINWINDOW_H
.cpp
Код:
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
QNetworkRequest request;
request.setUrl(QUrl("http://www.yandex.ru/"));
request.setRawHeader("Host", "yandex.ru");
request.setRawHeader("User-Agent", "Mozilla/5.0 (X11; U; Linux x86_64; ru; rv:1.9.0.10) Gecko/2009042809 GranParadiso/3.0.10");
//request.setRawHeader("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)");
//request.setRawHeader("User-Agent", "Opera/9.80 (Windows NT 6.1; U; en) Presto/2.9.168 Version/11.50");
//request.setRawHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
//request.setRawHeader("Accept-Language", "en-us,en;q=0.5");
//request.setRawHeader("Accept-Encoding", "gzip,deflate");
//request.setRawHeader("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.7");
request.setRawHeader("Keep-Alive", "115");
request.setRawHeader("Connection", "keep-alive");
//request.setRawHeader("Referer", urlBytes);
//request.setRawHeader("Cookie", "");
//request.setRawHeader("Content-Type", "application/x-www-form-urlencoded");
//request.setRawHeader("Content-Length", "557");
QNetworkAccessManager* manager = new QNetworkAccessManager(this);
connect(manager, SIGNAL(finished(QNetworkReply*)),this, SLOT(searshFinished(QNetworkReply*)));
manager->get(request);
}
void MainWindow::searshFinished(QNetworkReply* reply)
{
QByteArray ansver = reply->read(reply->bytesAvailable());
qWarning() << ansver;
}
Скачать прогу можно
отсюда
Записан
Igore
Новичок
Offline
Сообщений: 36
Re: Yandex не отвечает
«
Ответ #1 :
Август 17, 2011, 16:40 »
У меня ответил. Qt 4.7.3, windows:
"<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><title>ЯндекÑ</title>..." и т.д.
Программа рабочая, разбирайся с окружением. Интернет через прокси?
По поводу 302
Цитировать
QNetworkRequest::RedirectionTargetAttribute 2 Replies only, type: QVariant::Url (no default) If present, it indicates that the server is redirecting the request to a different URL.
The Network Access API does not by default follow redirections
: it's up to the application to determine if the requested redirection should be allowed, according to its security policies. The returned URL might be relative. Use QUrl::resolved() to create an absolute URL out of it.
http://www.qtforum.org/article/29493/problems-with-qnetworkaccessmanager.html
«
Последнее редактирование: Август 17, 2011, 16:50 от Igore
»
Записан
vbi
Чайник
Offline
Сообщений: 88
Re: Yandex не отвечает
«
Ответ #2 :
Август 17, 2011, 17:41 »
та нет. Подключен напрямую к билайн по кабелю
Записан
vbi
Чайник
Offline
Сообщений: 88
Re: Yandex не отвечает
«
Ответ #3 :
Август 17, 2011, 17:43 »
У меня 4.7.0 Попробую переустановить...
Записан
vbi
Чайник
Offline
Сообщений: 88
Re: Yandex не отвечает
«
Ответ #4 :
Август 17, 2011, 23:06 »
Поставил последнюю версию, то же самое, запрос пустой, а вот в QWebView страница яндекса нормально загружается. А QNetworkReply возвращает пустую строку, в чем же проблема?
Записан
sendevent
Самовар
Offline
Сообщений: 170
Re: Yandex не отвечает
«
Ответ #5 :
Август 18, 2011, 12:22 »
глянь сниффером - мож че полезное найдешь.
Записан
не, ну а чо?
vbi
Чайник
Offline
Сообщений: 88
Re: Yandex не отвечает
«
Ответ #6 :
Август 18, 2011, 15:01 »
Проверил. Все равно что-то не пойму.
Вот мой запрос:
Цитировать
No. Time Source Destination Protocol Length Hypertext Transfer Protocol Info
6 0.671130 172.25.0.22 93.158.134.203 HTTP 288 Yes GET / HTTP/1.1
Frame 6: 288 bytes on wire (2304 bits), 288 bytes captured (2304 bits)
Ethernet II, Src: Pegatron_ce:67:77 (70:71:bc:ce:67:77), Dst: EdimaxTe_96:43:13 (00:50:fc:96:43:13)
Internet Protocol Version 4, Src: 172.25.0.22 (172.25.0.22), Dst: 93.158.134.203 (93.158.134.203)
Transmission Control Protocol, Src Port: 53921 (53921), Dst Port: http (80), Seq: 1, Ack: 1, Len: 234
Hypertext Transfer Protocol
GET / HTTP/1.1\r\n
[Expert Info (Chat/Sequence): GET / HTTP/1.1\r\n]
[Message: GET / HTTP/1.1\r\n]
[Severity level: Chat]
[Group: Sequence]
Request Method: GET
Request URI: /
Request Version: HTTP/1.1
Host:
www.yandex.ru\
r\n
User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; ru; rv:1.9.0.10) Gecko/2009042809 GranParadiso/3.0.10\r\n
Keep-Alive: 115\r\n
Connection: keep-alive\r\n
Accept-Encoding: gzip\r\n
Accept-Language: uk-UA,en,*\r\n
\r\n
[Full request URI:
http://www.yandex.ru/
]
А это ответ (пустой):
Цитировать
No. Time Source Destination Protocol Length Hypertext Transfer Protocol Info
9 0.760279 93.158.134.203 172.25.0.22 HTTP 635 Yes HTTP/1.1 302 Found
Frame 9: 635 bytes on wire (5080 bits), 635 bytes captured (5080 bits)
Ethernet II, Src: EdimaxTe_96:43:13 (00:50:fc:96:43:13), Dst: Pegatron_ce:67:77 (70:71:bc:ce:67:77)
Internet Protocol Version 4, Src: 93.158.134.203 (93.158.134.203), Dst: 172.25.0.22 (172.25.0.22)
Transmission Control Protocol, Src Port: http (80), Dst Port: 53921 (53921), Seq: 1, Ack: 235, Len: 581
Hypertext Transfer Protocol
HTTP/1.1 302 Found\r\n
[Expert Info (Chat/Sequence): HTTP/1.1 302 Found\r\n]
[Message: HTTP/1.1 302 Found\r\n]
[Severity level: Chat]
[Group: Sequence]
Request Version: HTTP/1.1
Status Code: 302
Response Phrase: Found
Server: nginx\r\n
Date: Thu, 18 Aug 2011 11:43:29 GMT\r\n
Connection: close\r\n
Cache-Control: no-cache,no-store,max-age=0,must-revalidate\r\n
Location:
http://pass.yandex.ru/?retpath=http%3A%2F%2Fwww.yandex.ua\r\n
Content-Length: 0\r\n
Expires: Thu, 18 Aug 2011 11:43:29 GMT\r\n
Last-Modified: Thu, 18 Aug 2011 11:43:29 GMT\r\n
P3P: policyref="/w3c/p3p.xml", CP="NON DSP ADM DEV PSD IVDo OUR IND STP PHY PRE NAV UNI"\r\n
Set-Cookie: yandexuid=9523829581313667809; domain=.yandex.ru; path=/; expires=Sun, 15-Aug-2021 11:43:29 GMT\r\n
X-XRDS-Location:
http://openid.yandex.ru/server_xrds/\r\n
\r\n
Записан
vbi
Чайник
Offline
Сообщений: 88
Re: Yandex не отвечает
«
Ответ #7 :
Август 18, 2011, 15:06 »
По ходу не находит его чтоли?
Записан
Serr500
Новичок
Offline
Сообщений: 49
Re: Yandex не отвечает
«
Ответ #8 :
Август 18, 2011, 15:16 »
http://ru.wikipedia.org/wiki/%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BA%D0%BE%D0%B4%D0%BE%D0%B2_%D1%81%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%B8%D1%8F_HTTP#302
Записан
vbi
Чайник
Offline
Сообщений: 88
Re: Yandex не отвечает
«
Ответ #9 :
Август 18, 2011, 15:24 »
Попробовал сделать запрос на "
http://www.yandex.ua
", Выдает то же:
Цитировать
No. Time Source Destination Protocol Length Hypertext Transfer Protocol Info
7 1.065026 87.250.251.3 172.25.0.22 HTTP 605 Yes HTTP/1.1 302 Found
Frame 7: 605 bytes on wire (4840 bits), 605 bytes captured (4840 bits)
Ethernet II, Src: EdimaxTe_96:43:13 (00:50:fc:96:43:13), Dst: Pegatron_ce:67:77 (70:71:bc:ce:67:77)
Internet Protocol Version 4, Src: 87.250.251.3 (87.250.251.3), Dst: 172.25.0.22 (172.25.0.22)
Transmission Control Protocol, Src Port: http (80), Dst Port: 54216 (54216), Seq: 1, Ack: 235, Len: 551
Hypertext Transfer Protocol
HTTP/1.1 302 Found\r\n
[Expert Info (Chat/Sequence): HTTP/1.1 302 Found\r\n]
Request Version: HTTP/1.1
Status Code: 302
Response Phrase: Found
Server: nginx\r\n
Date: Thu, 18 Aug 2011 12:17:34 GMT\r\n
Connection: close\r\n
Cache-Control: no-cache,no-store,max-age=0,must-revalidate\r\n
Location:
http://pass.yandex.ua/?retpath=http%3A%2F%2Fwww.yandex.ua%2F\r\n
Content-Length: 0\r\n
Expires: Thu, 18 Aug 2011 12:17:35 GMT\r\n
Last-Modified: Thu, 18 Aug 2011 12:17:35 GMT\r\n
P3P: policyref="/w3c/p3p.xml", CP="NON DSP ADM DEV PSD IVDo OUR IND STP PHY PRE NAV UNI"\r\n
Set-Cookie: Cookie_check=CheckCookieCheckCookie; domain=.yandex.ua; path=/\r\n
X-XRDS-Location:
http://openid.yandex.ru/server_xrds/\r\n
\r\n
Записан
vbi
Чайник
Offline
Сообщений: 88
Re: Yandex не отвечает
«
Ответ #10 :
Август 18, 2011, 15:25 »
Делаю запрос на "
http://pass.yandex.ua/?retpath=http%3A%2F%2Fwww.yandex.ua%2F\r\n
"
Выдает вот что:
Цитировать
No. Time Source Destination Protocol Length Hypertext Transfer Protocol Info
6 0.106435 213.180.204.47 172.25.0.22 HTTP 497 Yes HTTP/1.1 302 Moved Temporarily
Frame 6: 497 bytes on wire (3976 bits), 497 bytes captured (3976 bits)
Ethernet II, Src: EdimaxTe_96:43:13 (00:50:fc:96:43:13), Dst: Pegatron_ce:67:77 (70:71:bc:ce:67:77)
Internet Protocol Version 4, Src: 213.180.204.47 (213.180.204.47), Dst: 172.25.0.22 (172.25.0.22)
Transmission Control Protocol, Src Port: http (80), Dst Port: 54240 (54240), Seq: 1, Ack: 287, Len: 443
Hypertext Transfer Protocol
HTTP/1.1 302 Moved Temporarily\r\n
[Expert Info (Chat/Sequence): HTTP/1.1 302 Moved Temporarily\r\n]
Request Version: HTTP/1.1
Status Code: 302
Response Phrase: Moved Temporarily
Server: nginx\r\n
Date: Thu, 18 Aug 2011 12:23:28 GMT\r\n
Transfer-Encoding: chunked\r\n
Connection: close\r\n
Location:
http://passport.yandex.ru/passport?trace=pass-f2.8788.ebadretp1&mode=error&error=badretpath&badretpath=http%253A%252F%252Fwww.yandex.ua%252F%0D%0A\r\n
Expires: Thu, 01 Jan 1970 00:00:01 GMT\r\n
Cache-Control: no-cache\r\n
Cache-Control: no-cache, private, no-cache, no-store, must-revalidate, max-age=0\r\n
\r\n
HTTP chunked response
Записан
vbi
Чайник
Offline
Сообщений: 88
Re: Yandex не отвечает
«
Ответ #11 :
Август 18, 2011, 15:28 »
Вот при переходе сюда: "
http://passport.yandex.ru/passport?trace=pass-f2.8788.ebadretp1&mode=error&error=badretpath&badretpath=http%253A%252F%252Fwww.yandex.ua%252F%0D%0A\r\n
"
наконец то загружается хоть что-то. Но это всего-лиш страница с предупреждением о фишинге...
Записан
Serr500
Новичок
Offline
Сообщений: 49
Re: Yandex не отвечает
«
Ответ #12 :
Август 18, 2011, 16:52 »
Хм... Странно... Попробуйте указать referer.
Записан
vbi
Чайник
Offline
Сообщений: 88
Re: Yandex не отвечает
«
Ответ #13 :
Август 19, 2011, 09:02 »
Та не помогает... Что ж буду наверно пользоватся QWebView. Этот компонент сам решает множество проблем.
Записан
sendevent
Самовар
Offline
Сообщений: 170
Re: Yandex не отвечает
«
Ответ #14 :
Август 19, 2011, 16:56 »
Не, ну понятно - не получается, бесит, но зачем яндекс-то ломать было?
(Похоже, из Росси он сейчас не доступен - лежит, и в твиттере народ жалуется, и я попасть не могу).
Если серьезно - при переходе на новый локейшн, указанный в первом редиректе, необходимо передавать и установленные куки - практически уверен, проблема в них (из "Set-Cookie: yandexuid=9523829581313667809; domain=.yandex.ru; path=/; expires=Sun, 15-Aug-2021 11:43:29 GMT" - предпоследняя строчка ответа на первый гет).
Записан
не, ну а чо?
Страниц: [
1
]
2
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
=> Архив
===> Программирование
=====> Python
===> Веб программирование
=====> PHP, PERL, CGI
Загружается...