首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QNetworkAccessManager问题

QNetworkAccessManager问题
EN

Stack Overflow用户
提问于 2011-07-27 06:18:23
回答 2查看 2.7K关注 0票数 2

我正在尝试使用QNetworkAccessManager打开一个网页--对于某些页面,它工作得很好--而对于其他页面,它就不行了。我试着设置一个真正的浏览器用户代理,但是它仍然不能工作,例如,http://www.erepublik.com。代码如下:

代码语言:javascript
复制
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);

..。

代码语言:javascript
复制
void MainWindow::replyFinished(QNetworkReply *reply)
{
     QString data = reply->readAll();
     qDebug() << data;
}

数据如下:

代码语言:javascript
复制
<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的首页获得国家的人口数量。

你知道为什么会发生这种情况吗?提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-27 06:24:45

看起来你得到的数据是正确的,只是那个特定的URL只是把你转到了一个不同的URL。请尝试使用http://www.erepublik.com/en (使用/en)。

票数 3
EN

Stack Overflow用户

发布于 2011-07-27 06:28:03

返回的超文本标记语言会将您重定向到http://www.erepublik.com/en,因此您最好形成QNetworkRequest,以便直接转到该URL。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6837288

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档