QNetworkReply 总是发出 finish() 吗?

zzy*_*zzy 5 qt qnetworkreply

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

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

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

注意:不要删除连接到该信号的槽中的对象。使用deleteLater()。

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

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

Ale*_*r V 2

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

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

在上面的例子中,连接肯定还没有完成。没有发出完成信号。

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

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