0

我想做一個簡單的文件下載。這裏是我的代碼段用於下載一個URL;如果我嘗試獲取簡單網址,例如「http://stackoverflow.com」,此代碼正常工作。
但是當我指定的URL爲重定向時,它會拋出一個錯誤,說「連接已關閉」。QNetworkReply錯誤「連接關閉」,當獲得一個簡單的URL

//Sets a sample URL which redirects. 
QString url = "http://downloads.sourceforge.net/project/gretl/gretl/1.9.92/gretl-1.9.92.tar.xz" 

QNetworkAccessManager * networkAccessManager = new QNetworkAccessManager(this); 

QNetworkRequest * networkRequest = new QNetworkRequest(QUrl(url)); 

//Getting the URL 
QNetworkReply * networkReply = networkAccessManager->get(*networkRequest); 

此外,我已連接以下信號槽能夠識別網絡錯誤:

//Connects networkReply object's error signal to a slot which prints the error. 
connect(networkReply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(printError(QNetworkReply::NetworkError))); 

這裏是如果networkReply的誤差信號被髮射它打印錯誤的時隙:

void printError(QNetworkReply::NetworkError code) 
{ 
    qDebug() << "Network Error Code: " << code; 
    qDebug() << networkReply->errorString(); 
} 

由於此錯誤,網絡地址爲回覆對象永遠不會收到任何標題。

我需要的是用這種方法來讀取HTTP狀態代碼:QNetworkReply::attribute(QNetworkRequest::HttpStatusCodeAttribute)

我無法讀取HTTP狀態代碼,因爲我沒有得到頭。

任何人都可以說什麼是怎麼回事?
在此先感謝! :)

回答

3

Herehere是處理這種情況下很好的例子 - 基本上你添加一個插槽finished信號,然後檢查HTTP狀態代碼301和/或QNetworkRequest::RedirectionTargetAttribute屬性,看看是否被重定向,如果是問題重定向鏈接的新請求。

+0

謝謝!我沒有像示例中那樣設置用戶代理。它在指定用戶代理時起作用。我認爲服務器在發現我沒有用戶代理時會斷開連接。 – Naveen 2014-10-07 02:41:48

相關問題