0
    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 文件。当我输入一个不正确的错误 url 时,我无法收到错误信号,但是当我输入正确的 url 时,我可以获得完成的信号。

这个问题的原因是什么?

4

1 回答 1

0

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

如果要处理 HTTP 错误,则必须使用QNetworkReply::attributeerror方法的回复属性,并将它们与使用信号报告的错误分开处理

于 2013-07-01T08:32:31.030 回答