Отправка 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С