Перейти к основному содержимому

HttpСервисОтвет

Стд::HttpСервисы::HttpСервисОтвет Доступность: Сервер

Результат выполнения обработчика HTTP-сервиса. Доступ к экземпляру осуществляется через свойство Ответ параметра обработчика.

Сравнение ссылочное

Иерархия типа

Базовые типы: Объект


Свойства

Заголовки

Доступность: Сервер ТолькоЧтение

Заголовки: ЗаголовкиHttp

Заголовки ответа.

Заголовки ответа могут быть изменены только до начала записи тела. После начала записи тела попытка изменения заголовков будет приводить к исключению ИсключениеНедопустимоеСостояние.

Примеры

Обработчик запроса к Http-сервису в случае ошибки устанавливает в заголовке 'Content-Type' тип содержимого ответа и используемую кодировку, а в теле ответа - текст ошибки.

метод СОбработкойОшибки(Запрос: HttpСервисЗапрос)
попытка
// логика обработки запроса
поймать Ошибка: Исключение
Запрос.Ответ.УстановитьКодСтатуса(500)
Запрос.Ответ.Заголовки.Установить("Content-Type", "text/plain; charset=utf-8")
Запрос.Ответ.УстановитьТело("При обработке Http-запроса произошла ошибка: " + Ошибка.Описание)
;
;

КодСтатуса

Доступность: Сервер

КодСтатуса: Число

Код состояния (ответа), возвращаемый HTTP-сервисом.

Примеры

Обработчик запроса к Http-сервису в случае ошибки устанавливает код статуса 500 - внутренняя ошибка сервера.

метод СОбработкойОшибки(Запрос: HttpСервисЗапрос)
попытка
// логика обработки запроса
поймать Ошибка: Исключение
Запрос.Ответ.КодСтатуса = 500
Запрос.Ответ.Заголовки.Установить("Content-Type", "text/plain; charset=utf-8")
Запрос.Ответ.УстановитьТело("При обработке Http-запроса произошла ошибка: " + Ошибка.Описание)
;
;

Причина

Доступность: Сервер ТолькоЧтение

Причина: Строка

Текстовая расшифровка кода HTTP-статуса.

Примеры

Метод регистрации информации о запросе и ответе Http-сервиса в журнале событий:

метод РегистрироватьЗапрос(Запрос: HttpСервисЗапрос)
знч СобытиеЖурнала = новый ExecutionEvent(Details = "Запрос Http-сервиса. Имя cервиса: \"%{Запрос.ИмяСервиса}\", имя шаблона: \"%{Запрос.ИмяШаблона}\", путь к ресурсу: \"%{Запрос.ПутьКРесурсу}\", код статуса ответа: %{Запрос.Ответ.КодСтатуса}(%{Запрос.Ответ.Причина})")
СобытиеЖурнала.Записать()
;

Методы

ОткрытьПотокЗаписиТела

Доступность: Сервер

ОткрытьПотокЗаписиТела(): ПотокЗаписи

Возвращает поток для записи тела. Устанавливается заголовок Transfer-Encoding: Chunked.

После вызова этого метода любое изменение заголовков ответа или тела ответа запрещено, при попытке изменения будет выброшено исключение ИсключениеНедопустимоеСостояние. Так же будет закрыт поток чтения тела HTTP-запроса.

Рекомендуется пользоваться методами УстановитьТело в большинстве случаев. Данный метод следует использовать в случае необходимости потоковой передачи данных.

Примеры

В методе выполняется запись содержимого потока в ответ http-сервиса.

метод ОтдатьКартинку(Ответ: HttpСервисОтвет)
исп СодержимоеПоток = Ресурс{Картинка.png}.ОткрытьПотокЧтения()
СодержимоеПоток.КопироватьВ(Ответ.ОткрытьПотокЗаписиТела())
;

УстановитьКодСтатуса

Доступность: Сервер

УстановитьКодСтатуса(КодСтатуса: Число)

Устанавливает код статуса ответа КодСтатуса. Код статуса нельзя изменить после того, как начата запись тела. В этом случае при попытке изменить код будет выброшено исключение ИсключениеНедопустимоеСостояние.

Примеры

Обработчик запроса к Http-сервису в случае ошибки устанавливает код статуса 500 - внутренняя ошибка сервера.

метод СОбработкойОшибки(Запрос: HttpСервисЗапрос)
попытка
// логика обработки запроса
поймать Ошибка: Исключение
Запрос.Ответ.УстановитьКодСтатуса(500)
Запрос.Ответ.Заголовки.Установить("Content-Type", "text/plain; charset=utf-8")
Запрос.Ответ.УстановитьТело("При обработке Http-запроса произошла ошибка: " + Ошибка.Описание)
;
;

УстановитьТело

Доступность: Сервер

УстановитьТело(Тело: Байты)
Перегрузка:
УстановитьТело(Тело: Строка, Кодировка: Строка = "UTF-8")
УстановитьТело(Тело: ДвоичныйОбъект.Ссылка)

Устанавливает тело ответа из байтов Тело. Также устанавливает заголовок 'Content-Length'. После вызова этого метода любое изменение заголовков ответа или тела ответа запрещено, при попытке изменения будет выброшено исключение ИсключениеНедопустимоеСостояние. Так же будет закрыт поток чтения тела HTTP-запроса.

Примеры

Обработчик Http-сервиса возвращает в теле ответа содержимое текстового ресурса, запрошенного по имени из параметра "name":

метод ПрочитатьРесурс(Запрос: HttpСервисЗапрос)
знч Имя = Запрос.Параметры.ПолучитьПервый("name")

пер СодержимоеКакБайты = ПолучитьСодержимоеРесурса(Имя).ПрочитатьКакБайты()
Запрос.Ответ.Заголовки.Установить("Content-Type", "text/plain; charset=utf-8")
Запрос.Ответ.УстановитьТело(СодержимоеКакБайты)
;

метод ПолучитьСодержимоеРесурса(Имя: Строка): ПотокЧтения
// ...
;

УстановитьТело

Доступность: Сервер

УстановитьТело(Тело: ДвоичныйОбъект.Ссылка)
Перегрузка:
УстановитьТело(Тело: Строка, Кодировка: Строка = "UTF-8")
УстановитьТело(Тело: Байты)

Устанавливает тело ответа из двоичных данных Тело. Также устанавливает заголовок 'Content-Length'. После вызова этого метода любое изменение заголовков ответа или тела ответа запрещено, при попытке изменения будет выброшено исключение ИсключениеНедопустимоеСостояние. Так же будет закрыт поток чтения тела HTTP-запроса.

Примеры

Обработчик Http-сервиса возвращает статический ресурс проекта index.html:

метод ПолучитьГлавнуюСтраницу(Запрос: HttpСервисЗапрос)
Запрос.Ответ.Заголовки.Установить("Content-Type", "text/html; charset=utf-8")
Запрос.Ответ.УстановитьТело(Ресурс{index.html}.Ссылка)
;

УстановитьТело

Доступность: Сервер

УстановитьТело(
Тело: Строка,
Кодировка: Строка = "UTF-8")
Перегрузка:
УстановитьТело(Тело: Байты)
УстановитьТело(Тело: ДвоичныйОбъект.Ссылка)

Устанавливает тело ответа из строки Тело в кодировке Кодировка. Также устанавливает заголовок 'Content-Length'. После вызова этого метода любое изменение заголовков ответа или тела ответа запрещено, при попытке изменения будет выброшено исключение ИсключениеНедопустимоеСостояние. Так же будет закрыт поток чтения тела HTTP-запроса.

Примеры

Обработчик Http-сервиса возвращает в теле ответа текущее время:

метод ТекущееВремя(Запрос: HttpСервисЗапрос)
Запрос.Ответ.УстановитьТело(Время.Сейчас().ВСтроку())
;

Список унаследованных методов

Объект

ВСтроку, ПолучитьТип, Представление