Проблема QNetworkAccessManager - PullRequest
       31

Проблема QNetworkAccessManager

2 голосов
/ 27 июля 2011

Я пытаюсь открыть веб-страницу с помощью QNetworkAccessManager - и для некоторых страниц он работает нормально, а для других - нет.Я попытался установить реальный пользовательский агент браузера, однако он все еще не работает, например, http://www.erepublik.com. Вот код:

QNetworkAccessManager *manager = new QNetworkAccessManager(this);
connect(manager, SIGNAL(finished(QNetworkReply*)),
             this, SLOT(replyFinished(QNetworkReply*)));

QNetworkRequest *request = new QNetworkRequest(QUrl("http://www.erepublik.com"));

request->setRawHeader( "User-Agent", "Mozilla/5.0 (X11; U; Linux i686 (x86_64); "
                           "en-US; rv:1.9.0.1) Gecko/2008070206 Firefox/3.0.1" );
request->setRawHeader( "charset", "utf-8" );
request->setRawHeader( "Connection", "keep-alive" );

manager->get(*request);

...

void MainWindow::replyFinished(QNetworkReply *reply)
{
     QString data = reply->readAll();
     qDebug() << data;
}

Данные следующие:

<html><head><meta http-equiv="refresh" content="0;url=http://www.erepublik.com/en"/></head></html><html><head><meta http-equiv="refresh" content="0;url=http://www.erepublik.com/en"/></head></html>

Теперь, что меня беспокоит, это работает для сайта, подобного http://www.hardwarebase.net (данные возвращают нормальный источник HTML), хотя он не работает для eRepublik,

Для тех, кому интересно узнать, что именно я хочу сделать - я хочу узнать количество стран на первой странице eRepublik.

Есть идеи, почему это происходит?Заранее спасибо.

Ответы [ 2 ]

3 голосов
/ 27 июля 2011

Похоже, что вы получаете данные правильно, просто этот конкретный URL просто перенаправляет вас на другой.Попробуйте вместо этого http://www.erepublik.com/en (с / en).

1 голос
/ 27 июля 2011

Возвращенный HTML-код перенаправляет вас на http://www.erepublik.com/en, поэтому вам лучше всего сформировать QNetworkRequest, чтобы перейти прямо по этому URL-адресу.

...