HTTPЗапрос.ПолучитьИмяФайлаТела

Методы · GetBodyFileName

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

Синтаксис

ПолучитьИмяФайлаТела()
Полное описание, параметры и ограничения

HTTPЗапрос.ПолучитьИмяФайлаТела (HTTPRequest.GetBodyFileName)

HTTPЗапрос (HTTPRequest)

ПолучитьИмяФайлаТела (GetBodyFileName)

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

Синтаксис:
ПолучитьИмяФайлаТела()
Возвращаемое значение:
Тип: Строка, Неопределено.
Неопределено - имя файла не было установлено.
Описание:

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

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

Тонкий клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.

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

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

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

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

Отправить тело из временного файла и сохранить ответ в другой файл

Имена файлов создаёт 1С. Удаляем только эти два учебных временных файла; файлы пользователя не используются.

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

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

Подготовка

  1. В 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.

  2. Используйте учебную файловую базу на том же компьютере. В клиент-серверной базе 127.0.0.1 означает машину сервера 1С, а не компьютер пользователя.

  3. Перед новым самостоятельным примером перезапустите учебный HTTP-сервер: это восстанавливает вымышленные товары A-01 и B-02. Рабочие базы и Avito этот сервер не использует.

  4. Если порт 18785 занят, сначала выясните, какой процесс его занимает; не останавливайте чужую службу. Не меняйте пример на адрес рабочего API.

  5. Серверному процессу 1С нужна запись в собственный временный каталог. Не подставляйте пути к существующим пользовательским файлам.

Соединение = Новый HTTPСоединение("127.0.0.1", 18785, , , , 10, Неопределено);
ВходнойФайл = ПолучитьИмяВременногоФайла("bin");
ВыходнойФайл = ПолучитьИмяВременногоФайла("bin");
Попытка
    Данные = ПолучитьДвоичныеДанныеИзСтроки("abc", КодировкаТекста.UTF8, Ложь);
    Данные.Записать(ВходнойФайл);
    Запрос = Новый HTTPЗапрос("/guide/echo");
    Запрос.УстановитьИмяФайлаТела(ВходнойФайл);
    Сообщить(Запрос.ПолучитьИмяФайлаТела() = ВходнойФайл);
    Ответ = Соединение.ОтправитьДляОбработки(Запрос, ВыходнойФайл);
    Если Ответ.КодСостояния <> 200 Тогда
        ВызватьИсключение "Не удалось сохранить ответ echo";
    КонецЕсли;
    Сообщить(Ответ.ПолучитьИмяФайлаТела() = ВыходнойФайл);
    Прочитанное = Новый ДвоичныеДанные(ВыходнойФайл);
    Сообщить(ПолучитьHexСтрокуИзДвоичныхДанных(Прочитанное));
Исключение
    ФайлВхода = Новый Файл(ВходнойФайл);
    Если ФайлВхода.Существует() Тогда
        УдалитьФайлы(ВходнойФайл);
    КонецЕсли;
    ФайлВыхода = Новый Файл(ВыходнойФайл);
    Если ФайлВыхода.Существует() Тогда
        УдалитьФайлы(ВыходнойФайл);
    КонецЕсли;
    ВызватьИсключение;
КонецПопытки;
УдалитьФайлы(ВходнойФайл);
УдалитьФайлы(ВыходнойФайл);

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

  1. ПолучитьИмяВременногоФайла создаёт уникальные имена, двоичные данные записываем только в подготовленный входной файл.

  2. УстановитьИмяФайлаТела задаёт источник запроса, второй аргумент ОтправитьДляОбработки — файл для полученного ответа.

  3. Проверяем обе привязки имён и читаем содержимое ответа.

  4. При успехе и исключении удаляем только два файла, созданных этим запуском.

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

  1. Оба сравнения имён дают Истина; содержимое выходного файла в Hex 616263.

  2. После завершения оба временных файла отсутствуют.

  3. При недоступном сервере входной временный файл также удаляется обработчиком исключения.

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

Отправка и сохранение тела выполнены через два изолированных временных файла.

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

  1. Пути в серверном коде относятся к серверу 1С, а не клиентскому компьютеру.

  2. Внешний API может записать в выходной файл текст ошибки: всегда проверяйте статус до трактовки файла как успешного результата.

  3. УдалитьФайлы допускает маски: здесь передаём только точные уникальные имена, не каталог и не шаблон.

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

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

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

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

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