Russian Qt Forum

Qt => Работа с сетью => Тема начата: Paramon от Июль 05, 2014, 16:40



Название: QNetworkReply считает 404 за ошибку
Отправлено: Paramon от Июль 05, 2014, 16:40
Может 404 и ошибка, не знаю.  ::)

Такой конструкцией проверяю ошибки.
Код:
if(networkReply->error()!=QNetworkReply::NoError)
Как мне игнорировать статус-коды сервера, там 404, 502, 503 и т.п.? Или как превратить networkReply->error() в код ошибки (никак не могу разобраться с возвращаемым NetworkError)?
Спасибо.


Название: Re: QNetworkReply считает 404 за ошибку
Отправлено: Paramon от Июль 05, 2014, 16:47
Код:
if(networkReply->error()!=QNetworkReply::NoError && networkReply->error()!=QNetworkReply::ContentNotFoundError)

Разве что так.  ::)


Название: Re: QNetworkReply считает 404 за ошибку
Отправлено: vregess от Июль 05, 2014, 20:42
QNetworkReply::error() - это ошибки обработки запроса (например, ошибки сети).

HTTP статусы:
Код
C++ (Qt)
int http_status_code = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();


Название: Re: QNetworkReply считает 404 за ошибку
Отправлено: Paramon от Июль 06, 2014, 11:05
QNetworkReply::error() - это ошибки обработки запроса (например, ошибки сети).
Всё верно. Только когда сервер возвращает 404 Not Found - срабатывает индикатор ошибки, вот и интересуюсь - то ли так и должно быть, то ли я не правильно/не там ошибки ловлю.


Название: Re: QNetworkReply считает 404 за ошибку
Отправлено: Bepec от Июль 06, 2014, 11:45
Правильно. Это же ошибка - нет такой страницы :D


Название: Re: QNetworkReply считает 404 за ошибку
Отправлено: Paramon от Июль 06, 2014, 12:44
Правильно. Это же ошибка - нет такой страницы :D
Ну так то оно так, но и не так. Какая ему разница, есть страница-нет страницы. Это уже дело пользователя - обрабатывать возвращаемый статус. Или тогда почему оно редиректы автоматически не обрабатывает, раз уж на то пошло.  >:(


Название: Re: QNetworkReply считает 404 за ошибку
Отправлено: Bepec от Июль 06, 2014, 12:48
У метода цель - загрузить страницу. Отсутствие страницы - ошибка.
А что там пользователю надо - решать вам, программисту :)


Название: Re: QNetworkReply считает 404 за ошибку
Отправлено: vregess от Июль 06, 2014, 15:52
Всё верно. Только когда сервер возвращает 404 Not Found - срабатывает индикатор ошибки, вот и интересуюсь - то ли так и должно быть, то ли я не правильно/не там ошибки ловлю.

Ну просто он, скорее всего для удобства, дополнительно обрабатывает пару стандартных ответов - 404 (QNetworkReply::ContentNotFoundError) и 401 (QNetworkReply::ContentAccessDenied).

Так что если надо обработать статусы сервера, то можно:
Код
C++ (Qt)
int error = networkReply->error();
switch (error)
{
case QNetworkReply::NoError:
case QNetworkReply::ContentNotFoundError:
case QNetworkReply::ContentAccessDenied:
  {
       int http_status_code = networkReply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
       // handle HTTP status.
       break;
  }
 
default:
  // handle network error.
}