Сформировать ответ 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С» и не аффилирован с ней.