Как заставить QNetworkReply читать все полученные данные, ДАЖЕ ЕСЛИ статус http не 200 OK

Моя проблема заключается в следующем:

Ответ QNetworkReply::readAll пуст, когда QNetworkReply::error() != NoError. Это нормально?

Из документации QIODevice::readAll:

Эта функция не может сообщать об ошибках; возврат пустого QByteArray() может означать либо отсутствие данных для чтения в данный момент, либо возникновение ошибки.

Это означает, что каждый раз, когда статус http отличается от 200 OK, QNetworkReply не может доставить другую информацию, которую заголовки отвечают??

У меня есть сервер Node+Express, который всегда отправляет подробное --json-- описание в случае, если статус http отличается от 200; Я не могу получить это описание из моей клиентской базы Qt на QNAM.

Как я могу изменить это поведение, я имею в виду, заставить QNetworkReply читать все полученные данные, ДАЖЕ ЕСЛИ статус http не 200 OK?

Версия Qt 5.3, ОС Win 7 64b.


person smaker85    schedule 23.03.2015    source источник


Ответы (1)


Да нормальное поведение. Если у вас есть ошибка, нет ответа от сервера и нет байтов от функции readAll().

person Yaroslav    schedule 23.03.2015
comment
У меня есть код ошибки, но ответ существует. Вы знаете, сервер может вернуть любой код с любым содержимым. - person smaker85; 23.03.2015
comment
Если код ошибки не 200 и ответ не пустой, вы можете получить свой ответ, используя функцию QNetworkReply::readAll(). Просто попробуйте. - person Yaroslav; 23.03.2015