5

我阅读了 signal finished() 的文档,它并没有说 finished() 总是发出。我读了 error() 信号:

void QNetworkReply::error(QNetworkReply::NetworkError code) 当回复检测到处理错误时发出此信号。可能会出现finished() 信号,表明连接已经结束。

code 参数包含检测到的错误的代码。调用 errorString() 以获取错误条件的文本表示。

注意:请勿删除与此信号相连的插槽中的对象。使用 deleteLater()。

另请参见 error() 和 errorString()。

该行是否The finished() signal will probably follow意味着在某些情况下, QNetworkReply 不会发出 finished() ?

4

1 回答 1

2

对于 QNetworkReply 错误信号,我们当然可以预期错误代码并不意味着连接断开。例如:

QNetworkReply::ContentNotFoundError 203 在服务器上没有找到远程内容(类似于 HTTP 错误 404)

在上述情况下,连接肯定还没有完成。没有发出完成信号。

QNetworkReply::RemoteHostClosedError 2 远程服务器在接收和处理整个回复之前过早关闭了连接

连接肯定完成了。并发出完成信号。

于 2015-07-17T01:49:35.963 回答