Как отправить POST-запрос из 1С с использованием протокола HTTP/2?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При интеграции 1С с современными веб-сервисами, особенно государственными системами или высоконагруженными API, разработчики часто сталкиваются с тем, что стандартные объекты HTTPСоединение и HTTPЗапрос платформы 1С:Предприятие работают исключительно по протоколу HTTP/1.1. Если сервер на той стороне настроен на жесткое требование HTTP/2 (или HTTP/3), вы получите ошибку соединения или «Unsupported protocol». Рассмотрим, как преодолеть это ограничение, используя доступные архитектурные подходы.

Использование консольной утилиты cURL

Самый быстрый и эффективный способ «подружить» 1С с протоколом HTTP/2 — это делегировать отправку запроса специализированной утилите cURL. Она установлена практически во всех современных операционных системах и поддерживает все актуальные стандарты HTTP.

Для реализации этого метода нам потребуется выполнить команду системы из кода 1С. Разберем процесс по шагам:

  1. Подготовьте данные (например, JSON-файл), который необходимо передать.
  2. Сформируйте командную строку, в которой будут указаны все необходимые заголовки, авторизационные данные и путь к файлу.
  3. Используйте метод КомандаСистемы() или ЗапуститьПриложение() для выполнения вызова.

Пример формирования команды для отправки multipart-запроса через cURL:


// Пример формирования строки вызова cURL
Команда = "curl -X POST https://адрес_сервиса/api/v3/true-api/documents " +
          "--http2 " +
          "-H ""Authorization: Bearer Токен"" " +
          "-H ""Accept: application/json"" " +
          "-F ""jsonFile=@C:\папка\файл.json"" " +
          "-o C:\папка\ответ.txt";

КомандаСистемы(Команда);

Обратите внимание на ключ --http2 — именно он принудительно заставляет клиент использовать нужный протокол. Результат выполнения запроса лучше перенаправлять в текстовый файл, чтобы затем считать его в 1С функцией Прочитать() объекта ТекстовыйДокумент.

Реализация через прокси-сервер (Gateway)

Если вы разрабатываете высоконагруженную систему, где вызовы КомандаСистемы() могут замедлять работу или создавать проблемы с безопасностью (например, из-за хранения токенов в командной строке), лучшим решением будет создание промежуточного микросервиса-прокси.

Суть метода заключается в следующем:

  1. Вы поднимаете локальный или сетевой прокси-сервер (например, на языке Go, Python или используя Nginx).
  2. 1С отправляет привычный POST-запрос по HTTP/1.1 на этот прокси-сервер.
  3. Прокси-сервер принимает запрос, «перепаковывает» его и пересылает целевому сервису уже по протоколу HTTP/2.
  4. Ответ от целевого сервера возвращается прокси-серверу, который транслирует его обратно в 1С.

Этот подход является наиболее надежным с точки зрения архитектуры. Вы получаете централизованное место для логирования запросов, обработки ошибок и управления версиями протоколов. Кроме того, современные стеки разработки (например, .NET 6/8 или Go) поддерживают HTTP/3, что дает вам «запас прочности» на случай будущего обновления требований со стороны API-провайдеров.

Рекомендации по реализации

Прежде чем приступать к написанию оберток, проанализируем ситуацию на стороне целевого сервера:

Таким образом, хотя штатные средства 1С не поддерживают HTTP/2 «из коробки», использование специализированных утилит или создание архитектурной прослойки позволяет эффективно решать задачи интеграции с любыми современными API.

← На главную