我试着做一个简单的文件下载程序。这是我下载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状态代码,因为我没有得到标头。
有人能说出发生了什么吗?
谢谢!)
发布于 2014-10-06 15:53:57
这里和这里是处理这个场景的很好的例子--基本上您为完成信号添加了一个插槽,然后检查301和/或QNetworkRequest::RedirectionTargetAttribute属性的HTTP代码,看看您是否被重定向,如果是,则发出一个新的重定向链接请求。
https://stackoverflow.com/questions/26217860
复制相似问题