Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ QNetworkAccessManager问题_C++_Qt_Http_Qt4_Qnetworkaccessmanager - Fatal编程技术网

C++ QNetworkAccessManager问题

C++ QNetworkAccessManager问题,c++,qt,http,qt4,qnetworkaccessmanager,C++,Qt,Http,Qt4,Qnetworkaccessmanager,我正在尝试使用QNetworkAccessManager打开一个网页——对于某些网页,它可以正常工作——而对于其他网页,它不能。我尝试设置一个真正的浏览器用户代理,但它仍然不起作用,例如。代码如下: QNetworkAccessManager *manager = new QNetworkAccessManager(this); connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFini

我正在尝试使用QNetworkAccessManager打开一个网页——对于某些网页,它可以正常工作——而对于其他网页,它不能。我尝试设置一个真正的浏览器用户代理,但它仍然不起作用,例如。代码如下:

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主窗口::replyFinished(QNetworkReply*reply)
{
QString data=reply->readAll();

qDebug()看起来您正确地获取了数据,只是那个特定的URL将您转发到了另一个URL相反。

返回的HTML正在将您重新定向到该URL,因此您最好形成QNetworkRequest直接转到该URL。

谢谢,这很有效。因为您比Goz快,所以我选择了您的答案。QNetworkAccessManager能否自动处理此类重定向?您可以连接到QNetworkAccessManager a的metaDataChanged信号nd检查状态代码是否为HTTP重定向代码
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>