2

QNetworkAccessManager を使用して Web ページを開こうとしています - 一部のページでは正常に動作しますが、他のページでは正常に動作しません。実際のブラウザのユーザー エージェントを設定しようとしましたが、たとえば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 のフロント ページから国の人口数を取得したいと考えています。

なぜこれが起こっているのですか?前もって感謝します。

4

2 に答える 2

3

データを正しく取得しているように見えますが、その特定の URL から別の URL に転送されているだけです。代わりにhttp://www.erepublik.com/en (/en を使用) を試してください。

于 2011-07-26T22:24:44.917 に答える
1

返された HTML は、http: //www.erepublik.com/en にリダイレクトするため、QNetworkRequest を作成してその URL に直接アクセスすることをお勧めします。

于 2011-07-26T22:28:02.547 に答える