К статьям

Отправка HTTP-запросов из 1C

2 мин


Платформа 1С предоставляет встроенный HTTP-Клиент, с помощью которого можно отправлять HTTP-запросы без особых ограничений.

Начнем сразу с примера, будем сразу учиться писать код с учетом некоторых особенностей, но не слишком усложняя:

Сервер = "academy.dev-ins.ru";

ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL;

 

Попытка

 

    Соединение = Новый HTTPСоединение(Сервер,,,,,,ЗащищенноеСоединение);

 

Исключение

 

    Сообщить("Подключение не удалось, по причине :" + ОписаниеОшибки());    

    ВызватьИсключение ОписаниеОшибки();

    

КонецПопытки;

Сначала мы объявляем и сразу инициализируем переменные Сервер со значением подходящим для нашего сервера, и ЗащищенноеСоединение инициализированное пустым конструктором. Обе из них нужны для создания HTTP - соединения, которое происходит дальше.

Сервер мы передаем в соединение, для того чтобы определить "куда" мы подключаемся, а защищенное соединение, чтобы определить "как" мы подключаемся. В данном случае соединение произойдет по протоколу HTTPS, а если не указать защищенное соединение, то по протоколу HTTP. Это важный момент, наш сервис работает именно по протоколу HTTPS, и если не указать защищенное соединение, то сервис постарается перенаправить нас на сервис по правильному протоколу, сделать Redirect, обработку которого мы в нашем коде не описали, чтобы не усложнять.

Весь код соединения мы заключили в попытку, потому что в случае неудачи конструктор HTTPСоединение выбросит исключение, которое мы обязаны обработать. 

Далее мы сформируем правильный URL в переменной РесурсСПараметрами, и добавим в него параметры запроса после знака вопроса. Для простоты укажем их просто в строке. В более сложных ситуациях параметры лучше добавлять не используя жесткое их задание в строке.

Ресурс = "tasks/integration_1c/0c59f818-5c03-4a2e-b925-f496736e24d5/21c2a22c431611ed80120242ac1c0005";

РесурсСПараметрами = Ресурс + "?" + "fullname=Имя Пользователя";

 

Запрос = Новый HTTPЗапрос(РесурсСПараметрами);

Ответ = Соединение.Получить(Запрос);  

 

КодСостояния = Ответ.КодСостояния;

ТелоВВидеСтроки = Ответ.ПолучитьТелоКакСтроку();

Далее мы создали объект HTTPЗапрос и передали в него наш РесурсСПараметрами, После чего вызвали метод Получить у объекта соединения и передали в него наш запрос, выполнив тем самым GET-запрос. В результате, после выполнения запроса мы получим результат выполнения в переменную Ответ. Там будет сформирован объект HTTPОтвет, содержащий все необходимые данные:

  • КодСостояния - Это HTTP статус-код (200, 300, 404, 500 и т.д.) сообщающий о состоянии ответа.
  • Заголовки - Содержащие заголовки ответа сервера
  • Тело - Для получения которого есть несколько методов, тело можно получить в файл, в строку, в двоичные данные и в поток. В данном случае мы получили его как строку. Которую в дальнейшем уже можно обработать внутри 1С

Задачи на эту тему: