5

シグナル 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 に答える