0

我正在尝试制作一个简单的文件下载器。这是我下载 URL 的代码段;如果我尝试获取诸如“ http://stackoverflow.com ”之类的简单 URL,则此代码可以正常工作。
但是当我指定重定向的 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();
}

由于此错误,networkReply对象永远不会收到任何标头。

我的需要是通过这种方法读取 HTTP 状态码:QNetworkReply::attribute(QNetworkRequest::HttpStatusCodeAttribute)

我无法读取 HTTP 状态代码,因为我没有得到标题。

任何人都可以说发生了什么事吗?
提前致谢!:)

4

1 回答 1

3

这里这里是处理这种情况的好例子 - 基本上你为完成信号添加一个插槽,然后检查 301 和/或QNetworkRequest::RedirectionTargetAttribute属性的 HTTP 状态代码以查看你是否被重定向,如果是,则发出新的重定向链接请求.

于 2014-10-06T15:53:57.597 回答