HTTPСервисОтвет.УстановитьТелоИзСтроки

Методы · SetBodyFromString

Устанавливает тело ответа из строки.

Синтаксис

УстановитьТелоИзСтроки(<Тело>, <Кодировка>, <ИспользоватьBOM>)
Полное описание, параметры и ограничения

HTTPСервисОтвет.УстановитьТелоИзСтроки (HTTPServiceResponse.SetBodyFromString)

HTTPСервисОтвет (HTTPServiceResponse)

УстановитьТелоИзСтроки (SetBodyFromString)

Доступен, начиная с версии 8.3.5.

Синтаксис:
УстановитьТелоИзСтроки(<Тело>, <Кодировка>, <ИспользоватьBOM>)
Параметры:

<Тело> (обязательный)
Тип: Строка.
Строка, которая будет записана в тело ответа.

<Кодировка> (необязательный)
Тип: КодировкаТекста, Строка.
Определяет кодировку, в которой будет отправлено тело HTTP-ответа. Если параметр не задан, то тело отправляется в кодировке UTF8.
Установка этого параметра не вызывает автоматической установки соответствующего HTTP-заголовка.
Кодировка может быть задана как в виде значения перечисления КодировкаТекста, так и в виде строки с указанием названия кодировки.
Поддерживаемые названия кодировок:
UTF-8

UTF-16

UTF-16BE

UTF-16LE

ISO-8859-1

US-ASCII

gb18030

iso-8859-2

iso-8859-3

iso-8859-4

iso-8859-5

iso-8859-6

iso-8859-7

iso-8859-8

iso-8859-9

iso-8859-13

iso-8859-15

Shift_JIS

EUC-JP

Big5

Big5-HKSCS

GBK

GB2312

GB_2312-80

EUC-KR

KSC_5601

windows-949

windows-874

cp866

KOI8-R

KOI8-U

windows-1250

windows-1251

windows-1252

windows-1253

windows-1254

windows-1255

windows-1256

windows-1257

windows-1258

macintosh

x-mac-cyrillic

ISO-2022-JP

ISO-2022-KR

ISO-2022-CN

ISO-2022-CN-EXT

HZ-GB-2312
.

<ИспользоватьBOM> (необязательный)
Тип: ИспользованиеByteOrderMark.
Использовать метку порядка байтов (BOM) для кодировок, которые ее поддерживают: UTF-8, UTF-16 и др.
В режиме совместимости конфигурации значение по умолчанию - Использовать.
Значение по умолчанию: Авто.
Описание:

Устанавливает тело ответа из строки.

Доступность:

Сервер, толстый клиент.

См. также:
HTTPСервисОтвет, метод УстановитьТелоИзДвоичныхДанных

Использование в версии:

Доступен, начиная с версии 8.3.5.

Методическая информация

Практические примеры

Сформировать ответ HTTP-сервиса и проверить его тело без публикации

Создаём объект HTTPСервисОтвет в памяти. Он не отправляет сетевой ответ сам: обработчик опубликованного HTTP-сервиса должен его вернуть.

Где и как запускать

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Можно выполнить в серверной учебной процедуре: IIS, публикация и сеть не нужны.

  2. Не путайте HTTPОтвет от внешнего сервера и HTTPСервисОтвет, который создаёт ваш обработчик.

Заголовки = Новый Соответствие;
Заголовки.Вставить("Content-Type", "application/json; charset=utf-8");
Ответ = Новый HTTPСервисОтвет(200, "OK", Заголовки);
Ответ.УстановитьТелоИзСтроки(ЗаписатьЗначениеJSON(Новый Структура("name,quantity", "Книга", 3)), КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
Сообщить(Ответ.КодСостояния);
Сообщить(Ответ.Причина);
Сообщить(Ответ.Заголовки.Получить("Content-Type"));
Прочитанное = ПрочитатьЗначениеJSON(Ответ.ПолучитьТелоКакСтроку());
Сообщить(Прочитанное.name);
ДвоичноеТело = Ответ.ПолучитьТелоКакДвоичныеДанные();
Сообщить(ДвоичноеТело.Размер());
Поток = Ответ.ПолучитьТелоКакПоток();
Поток.Закрыть();
Ответ.Заголовки.Вставить("Content-Type", "application/octet-stream");
Ответ.УстановитьТелоИзДвоичныхДанных(ПолучитьДвоичныеДанныеИзСтроки("abc", КодировкаТекста.UTF8, Ложь));
Сообщить(ПолучитьHexСтрокуИзДвоичныхДанных(Ответ.ПолучитьТелоКакДвоичныеДанные()));

Разбор по шагам

  1. Задаём код, причину и Content-Type при создании ответа.

  2. Формируем JSON и читаем подготовленное тело обратно для самопроверки.

  3. Получаем двоичную и потоковую формы тела, закрываем поток.

  4. Меняем тело на двоичное и согласованно меняем Content-Type.

Как проверить результат

  1. Статус 200, причина OK, JSON содержит Книга и количество 3.

  2. После изменения тела Hex равен 616263, заголовок — application/octet-stream.

Ожидаемый результат

Объект ответа подготовлен и проверен, но никуда не отправлен.

На что обратить внимание

  1. В настоящем обработчике нужен Возврат Ответ; просто создать объект недостаточно для ответа клиенту.

  2. При смене формата тела меняйте Content-Type. JSON-заголовок при бинарном теле вводит клиент в заблуждение.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.