我正在尝试使用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主页获取国家的人口数量。

任何想法为什么会这样?提前致谢。

最佳答案

看起来您正在正确获取数据,只是该特定URL会将您转发到其他URL。尝试使用http://www.erepublik.com/en(带有/ en)。

10-07 20:31