Устанавливает тело запроса из строки.
Синтаксис
УстановитьТелоИзСтроки(<ТелоКакСтрока>, <Кодировка>, <ИспользоватьBOM>)Полное описание, параметры и ограничения
HTTPЗапрос.УстановитьТелоИзСтроки (HTTPRequest.SetBodyFromString)
HTTPЗапрос (HTTPRequest)
УстановитьТелоИзСтроки (SetBodyFromString)
Доступен, начиная с версии 8.2.
Синтаксис:
УстановитьТелоИзСтроки(<ТелоКакСтрока>, <Кодировка>, <ИспользоватьBOM>)
Параметры:
<ТелоКакСтрока> (обязательный)
Тип: Строка.
Содержит тело запроса в виде строки.
<Кодировка> (необязательный)
Тип: КодировкаТекста, Строка.
Определяет кодировку, в которой будет отправлен HTTP-запрос. Если параметр не задан, то тело отправляется в кодировке UTF8.
Установка этого параметра не вызывает автоматической установки соответствующего HTTP-заголовка.
Кодировка может быть задана как в виде значения перечисления КодировкаТекста, так и в виде строки с указанием названия кодировки.
В веб-клиенте параметр игнорируется. Строка интерпретируется в кодировке UTF-8.
Поддерживаемые названия кодировок:
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 и др.
В режиме совместимости конфигурации значение по умолчанию - Использовать.
В веб-клиенте параметр игнорируется.
Значение по умолчанию: Авто.
Описание:
Устанавливает тело запроса из строки.
Доступность:
Тонкий клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
Примечание:
В веб-клиенте параметры <Кодировка>, <ИспользоватьBOM> игнорируются. Строка интерпретируется в кодировке utf-8.
Использование в версии:
Доступен, начиная с версии 8.2.
Методическая информация
Практические примеры
Создать учебный товар методом POST
Сериализуем структуру в JSON, отправляем POST и отличаем создание 201 от повторного кода 409.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
В PowerShell запустите: & "C:\Program Files\nodejs\node.exe" "C:\Opencart_project\AmaDesk\tools\1c-platform-context-8.5.1.1343\guide-http-mock.cjs". Оставьте терминал открытым; остановка — Ctrl+C.
Используйте учебную файловую базу на том же компьютере. В клиент-серверной базе 127.0.0.1 означает машину сервера 1С, а не компьютер пользователя.
Перед новым самостоятельным примером перезапустите учебный HTTP-сервер: это восстанавливает вымышленные товары A-01 и B-02. Рабочие базы и Avito этот сервер не использует.
Если порт 18785 занят, сначала выясните, какой процесс его занимает; не останавливайте чужую службу. Не меняйте пример на адрес рабочего API.
Перезапуск сервера перед первой проверкой обязателен, иначе C-03 может уже существовать.
Соединение = Новый HTTPСоединение("127.0.0.1", 18785, , , , 10, Неопределено);
Товар = Новый Структура("code,name,quantity", "C-03", "Тетрадь", 2);
Тело = ЗаписатьЗначениеJSON(Товар);
Запрос = Новый HTTPЗапрос;
Запрос.АдресРесурса = "/guide/products";
Запрос.Заголовки.Вставить("Content-Type", "application/json; charset=utf-8");
Запрос.УстановитьТелоИзСтроки(Тело, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
Если Ответ.КодСостояния <> 201 Тогда
ВызватьИсключение СтрШаблон("Товар не создан: HTTP %1, %2", Ответ.КодСостояния, Ответ.ПолучитьТелоКакСтроку(КодировкаТекста.UTF8));
КонецЕсли;
Созданный = ПрочитатьЗначениеJSON(Ответ.ПолучитьТелоКакСтроку(КодировкаТекста.UTF8));
Сообщить(Созданный.name);
Сообщить(Созданный.quantity);
Сообщить(Ответ.Заголовки.Получить("Location"));Разбор по шагам
Структура задаёт известные поля учебного контракта; ЗаписатьЗначениеJSON создаёт строку.
Неинициализированному HTTPЗапрос задаём адрес, заголовок Content-Type и UTF-8 тело без BOM.
ОтправитьДляОбработки выполняет POST; проверяем ожидаемый статус 201.
Читаем созданный товар и Location, указывающий на новый ресурс.
Как проверить результат
Первый запуск выводит Тетрадь, 2 и /guide/products/C-03.
Повторный запуск без перезапуска сервера получает 409 code_exists.
После перезапуска задайте quantity=-1: получите 422 invalid_product.
Ожидаемый результат
В памяти учебного сервера создан товар C-03, файлы и реальные товары не изменяются.
На что обратить внимание
POST в рабочем API может создавать настоящий объект. Не переносите адреса и тестовые данные в production.
Не повторяйте изменяющий запрос автоматически после таймаута без проверки идемпотентности: сервер мог уже выполнить создание.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Подготовить HTTP-запрос с JSON без отправки
Разделяем подготовку запроса и сетевую операцию: этот код ничего не отправляет.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Нет токенов, соединения и обращения к реальному API.
Адрес /api/items — учебный путь, не адрес Avito.
Тело состоит из JSON-совместимых значений.
Данные = Новый Структура("title,quantity", "Книга", 3);
Запись = Новый ЗаписьJSON;
Запись.УстановитьСтроку();
Попытка
ЗаписатьJSON(Запись, Данные);
Исключение
Запись.Закрыть();
ВызватьИсключение;
КонецПопытки;
Тело = Запись.Закрыть();
ЗапросHTTP = Новый HTTPЗапрос("/api/items");
ЗапросHTTP.Заголовки.Вставить("Content-Type", "application/json; charset=utf-8");
ЗапросHTTP.Заголовки.Вставить("Accept", "application/json");
ЗапросHTTP.УстановитьТелоИзСтроки(Тело, КодировкаТекста.UTF8);
Сообщить(ЗапросHTTP.АдресРесурса);
Сообщить(ЗапросHTTP.ПолучитьТелоКакСтроку());Разбор по шагам
Сериализуем структуру в строку JSON.
Создаём запрос с относительным путём и заголовками.
Передаём тело в UTF-8 и проверяем его чтением обратно.
Как проверить результат
АдресРесурса равен /api/items.
Прочитанное тело содержит title=Книга, quantity=3.
Ожидаемый результат
Подготовленный объект HTTPЗапрос с JSON в UTF-8; сеть не используется.
На что обратить внимание
Метод GET/POST выбирается при отправке через HTTPСоединение.
Не вставляйте секреты в учебные примеры или журнал сообщений.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.