Должен ли я также подключиться к QNetworkReply :: error ()?

Я создал запрос POST и подключаюсь к законченный() сигнал:

QNetworkReply *reply = manager->post(request, postData.encodedQuery());
connect(reply, SIGNAL(finished()), this, SLOT(accept()));

Я хочу получать уведомления о завершении запроса POST независимо от того, был ли он неудачным или успешным.

Я заметил в документации, что есть также QNetworkReply :: Ошибка () сигнал, нужно ли к нему тоже подключиться или будет finished() называться во всех случаях?

2

Решение

Документация Qt гласит:

void QNetworkReply :: error (QNetworkReply :: NetworkError code) [сигнал]

Этот сигнал испускается, когда ответ обнаруживает ошибку в обработке.
Вероятно, последует сигнал завершения (), указывающий, что
соединение окончено.

Из того, что я видел в источниках Qt (недавно проверял абсолютно одну и ту же проблему), везде после error () после этого есть вызов Finish (). В 5.1.0 я не нашел места, где за ошибкой не следует завершение ()

например

void QNetworkReplyImpl::close()
{
Q_D(QNetworkReplyImpl);
if (d->state == QNetworkReplyImplPrivate::Aborted ||
d->state == QNetworkReplyImplPrivate::Finished)
return;

// stop the download
if (d->backend)
d->backend->closeDownstreamChannel();
if (d->copyDevice)
disconnect(d->copyDevice, 0, this, 0);

QNetworkReply::close();

// call finished which will emit signals
d->error(OperationCanceledError, tr("Operation canceled"));
d->finished();
}
1

Другие решения

Документация для error() говорит: finished() сигнал, вероятно, последует «, так что нет, finished() должно быть достаточно. Не забудьте проверить error() однако, получатель в обработчике сигналов.

1

По вопросам рекламы [email protected]