我想做一個簡單的文件下載。這裏是我的代碼段用於下載一個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狀態代碼,因爲我沒有得到頭。
任何人都可以說什麼是怎麼回事?
在此先感謝! :)
謝謝!我沒有像示例中那樣設置用戶代理。它在指定用戶代理時起作用。我認爲服務器在發現我沒有用戶代理時會斷開連接。 – Naveen 2014-10-07 02:41:48