2011-07-26 57 views
2

我想使用QNetworkAccessManager打開一個網頁 - 對於某些網頁,它工作正常 - 而對於其他網站則不會。我嘗試設置一個真正的瀏覽器用戶代理,但它仍然不起作用,例如,http://www.erepublik.com。下面的代碼: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 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首頁獲取國家人口數量。

任何想法爲什麼會發生這種情況?提前致謝。

回答

3

它看起來像你正確地獲取數據,只是該特定的URL只是轉發給你一個不同的。試試http://www.erepublik.com/en(用/ en)代替。

+1

謝謝你,工作。既然你比Goz快,我選擇了你的答案。 QNetworkAccessManager能自動處理這種重定向嗎? – Ahmed

+0

您可以連接到QNetworkAccessManager的metaDataChanged信號並檢查狀態碼是否爲HTTP重定向代碼 –

+0

謝謝,卡米爾! – Ahmed