qt使用QNetworkAccessManager无法获取错误信号

时间:2013-06-30 09:45:36

标签: qt qnetworkaccessmanager

    m_request.setUrl(pDownloadInfo->url);
    m_preply = pManager->get(m_request);

    QObject::connect(m_preply, SIGNAL(error(QNetworkReply::NetworkError)),
            this, SLOT(DownloadError(QNetworkReply::NetworkError)));
    QObject::connect(m_preply, SIGNAL(finished()), this, SLOT(ReadyRead()));

我使用qt5.0并使用QNetworkAccessManager下载http文件。 当我输入错误的网址时,我无法得到错误信号, 但是当我输入正确的网址时,我可以得到完成的信号。

这个问题是什么原因?

1 个答案:

答案 0 :(得分:0)

QNetworkReply错误信号仅适用于网络层而非协议层。这意味着它将报告在建立与HTTP服务器的连接期间发生的所有错误。建立连接后,如果HTTP服务器正确处理,则不会收到error信号。即使你从4xx或5xx状态代码输入产生的HTTP错误的网址仍然是你的回复将在服务器处理你的请求时没有错误(网络错误)结束。

如果您要处理HTTP错误,则必须使用QNetworkReply::attribute方法的回复属性,并将其与使用error信号

报告的错误分开处理