2011-07-26 7 views
2

QNetworkAccessManager를 사용하여 웹 페이지를 열려고합니다. 일부 페이지에서는 제대로 작동하지만 다른 페이지에서는 작동하지 않습니다. 실제 브라우저 사용자 에이전트를 설정하려고 시도했지만, 여전히 작동하지 않습니다 (예 : http://www.erepublik.com). 이 (데이터를 반환 http://www.hardwarebase.net 같은 사이트 작동 나를 귀찮게 무슨QNetworkAccessManager. 제점

<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> 

을 이제 :

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 소스), eRepublik에서는 작동하지 않습니다.

나는 정확하게하고 싶은 것을 알고 싶어하는 사람들을 위해 - 나는 eRepublik 첫 페이지에서 국가의 인구수를 얻고 싶다.

왜 이런 생각입니까? 미리 감사드립니다.

답변

3

데이터가 올바르게 표시되는 것처럼 보입니다. 특정 URL이 다른 사용자에게 전달된다는 것입니다. 대신 http://www.erepublik.com/en (/ en 포함)을 시도하십시오.

+1

감사합니다. 당신이 Goz보다 빠르기 때문에 나는 대답을 선택했습니다. QNetworkAccessManager가 이러한 재 지정을 자동으로 처리 할 수 ​​있습니까? – Ahmed

+0

QNetworkAccessManager의 metaDataChanged 신호에 연결하여 상태 코드가 HTTP 리디렉션 코드인지 확인하십시오 –

+0

감사합니다, 카밀! – Ahmed

관련 문제