Russian Qt Forum
Май 03, 2024, 00:22 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QNetworkReply считает 404 за ошибку  (Прочитано 4068 раз)
Paramon
Гость
« : Июль 05, 2014, 16:40 »

Может 404 и ошибка, не знаю.  Строит глазки

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

Код:
if(networkReply->error()!=QNetworkReply::NoError && networkReply->error()!=QNetworkReply::ContentNotFoundError)

Разве что так.  Строит глазки
Записан
vregess
Гость
« Ответ #2 : Июль 05, 2014, 20:42 »

QNetworkReply::error() - это ошибки обработки запроса (например, ошибки сети).

HTTP статусы:
Код
C++ (Qt)
int http_status_code = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
Записан
Paramon
Гость
« Ответ #3 : Июль 06, 2014, 11:05 »

QNetworkReply::error() - это ошибки обработки запроса (например, ошибки сети).
Всё верно. Только когда сервер возвращает 404 Not Found - срабатывает индикатор ошибки, вот и интересуюсь - то ли так и должно быть, то ли я не правильно/не там ошибки ловлю.
Записан
Bepec
Гость
« Ответ #4 : Июль 06, 2014, 11:45 »

Правильно. Это же ошибка - нет такой страницы Веселый
Записан
Paramon
Гость
« Ответ #5 : Июль 06, 2014, 12:44 »

Правильно. Это же ошибка - нет такой страницы Веселый
Ну так то оно так, но и не так. Какая ему разница, есть страница-нет страницы. Это уже дело пользователя - обрабатывать возвращаемый статус. Или тогда почему оно редиректы автоматически не обрабатывает, раз уж на то пошло.  Злой
Записан
Bepec
Гость
« Ответ #6 : Июль 06, 2014, 12:48 »

У метода цель - загрузить страницу. Отсутствие страницы - ошибка.
А что там пользователю надо - решать вам, программисту Улыбающийся
Записан
vregess
Гость
« Ответ #7 : Июль 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.
}
 
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.177 секунд. Запросов: 21.