Книга: Технологии интеграции "1С:Предприятия 8.3""
Назад: Ручное управление сеансами
Дальше: FTP-соединение

Коды состояния в ответах HTTP-сервера

В данном разделе будут рассмотрены различные коды ответов, возвращаемые HTTP-сервером, а точнее – коды состояния, содержащиеся в свойстве КодСостояния объектов HTTPСервисОтвет и HTTPОтвет.

Подробнее

Более подробно коды состояний, возвращаемые сервером, описаны в протоколе по адресу http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html.

Если при выполнении HTTP-запроса на веб-сервере возникает фатальная ошибка, то в большинстве случаев нужно остановить работу и показать пользователю сообщение об ошибке, включив в него код состояния, возвращенный HTTP-сервером.

Прежде всего, если при попытке выполнить HTTP-запрос на веб-сервере было вызвано исключение, то это говорит о том, что запрос не дошел до HTTP-сервера.

Коды состояний 4XX сигнализируют о неправильном запросе. Причины ошибок могут быть следующими:

Коды состояний 5XX сигнализируют о проблемах на сервере (возможно, на прокси-сервере). Причины ошибок могут быть следующими:

Коды состояний 3XX означают, что клиент должен предпринять дальнейшие действия для выполнения запроса. При этом запрос должен быть перенаправлен на новый адрес. Причины ошибок могут быть следующими:

Коды состояний 1XX и 2XX означают, что запрос клиента был успешно получен, понят и принят.

Ниже приводится пример процедуры ВыполнитьHTTPЗапрос(), которая получает в качестве параметра адрес ресурса. В процедуре устанавливается HTTP-соединение с локальным веб-сервером "localhost", затем на основе адреса ресурса создается HTTP-запрос и выполняется на сервере методом Получить() объекта HTTPСоединение. Ответ сервера в виде объекта HTTPОтвет возвращается в переменную Результат (листинг 1.142).

Листинг 1.142. Процедура «ВыполнитьHTTPЗапрос»

&НаСервереБезКонтекста

Процедура ВыполнитьHTTPЗапрос(АдресРесурса)

 

СерверИсточник = "localhost";

Сообщение = Новый СообщениеПользователю;

 

// Создать HTTP-соединение с сервером localhost.

HTTPСоединение = Новый HTTPСоединение(СерверИсточник);

 

// Создать HTTP-запрос на основе URL.

HTTPЗапрос = Новый HTTPЗапрос(АдресРесурса);

 

Попытка

Результат = HTTPСоединение.Получить(HTTPЗапрос);

Исключение

Сообщение.Текст = "Произошла сетевая ошибка!";

Сообщение.Сообщить();

ВызватьИсключение;

КонецПопытки;

 

Если Результат.КодСостояния >= 400 и Результат.КодСостояния < 500 Тогда

Сообщение.Текст = "Код статуса больше 4XX, ошибка запроса. Код статуса: " + Результат.КодСостояния;

КонецЕсли;

 

Если Результат.КодСостояния >= 500 и Результат.КодСостояния < 600 Тогда

Сообщение.Текст = "Код статуса больше 5XX, ошибка сервера. Код статуса: " + Результат.КодСостояния;

КонецЕсли;

 

// Обработать перенаправление.

Если Результат.КодСостояния >= 300 и Результат.КодСостояния < 400 Тогда

Сообщение.Текст = "Код статуса больше 3XX, Перенаправление. Код статуса: " + Результат.КодСостояния;

 

Если Результат.КодСостояния = 302 Тогда

Сообщение.Текст = Сообщение.Текст + Символы.ПС + "Код статуса 302, Постоянное перенаправление.";

АдресРесурса = Результат.Заголовки.Получить("Location");

 

Если АдресРесурса <> Неопределено Тогда

Сообщение.Текст = Сообщение.Текст + Символы.ПС + "Выполняю запрос по новому адресу " +

Символы.ПС + АдресРесурса;

ВыполнитьHTTPЗапрос(АдресРесурса);

Иначе

Сообщение.Текст = Сообщение.Текст + Символы.ПС + "Сервер не сообщил адрес ресурса!";

КонецЕсли;

КонецЕсли;

КонецЕсли;

 

Если Результат.КодСостояния < 300 Тогда

Сообщение.Текст = "Скорее всего все хорошо!";

Сообщение.Текст = Сообщение.Текст + Символы.ПС + "Код статуса: " + Результат.КодСостояния;

КонецЕсли;

 

Сообщение.Сообщить();

 

КонецПроцедуры

В этой процедуре обрабатываются и выводятся пользователю различные коды состояния HTTP-сервера. Отдельно анализируются коды ответа, которые сигнализируют о перенаправлении запросов. Если код состояния – 302, то процедура выполняется заново, с новым адресом ресурса.

Назад: Ручное управление сеансами
Дальше: FTP-соединение