我正在尝试使用 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 首页获得国家的人口数量。
任何想法为什么会发生这种情况?提前致谢。