Коннектор: удобный HTTP-клиент для 1С:Предприятие 8
В мире python очень популярна библиотека для работы с HTTP запросами - Requests (автор: Kenneth Reitz). Библиотека берет на себя всю рутину работы с HTTP запросами. Буквально в одну строку можно получать данные, отправлять, не заботясь о необходимости конструирования URL, кодирования данных и т.п. В общем библиотека очень мощная и проста в использовании.
Коннектор - это "Requests" для мира 1С.
Возможности
Основные возможности библиотеки:
- Передача параметров в строку запроса (в URL)
- Удобная работа с запросами и ответами в формате
JSON
- Отправка данных формы (полей формы),
application/x-www-form-urlencoded
- Отправка данных формы (полей формы и файлов),
multipart/form-data
- Прозрачная поддержка ответов, закодированных
GZip
- Сжатие тела запроса
GZip
Basic
,Digest
иAWS4-HMAC-SHA256
аутентификация- Автоматическое разрешение редиректов
- Установка и чтение Cookies
- Работа в рамках сессии с сохранением состояния (cookies, аутентификация и пр.)
- Переиспользование
HTTPСоединение
в рамках сессии - Настраиваемые повторные попытки соединения/отправки запроса с экспоненциальной задержкой
- Работает в т.ч. и на мобильной платформе
- Доступна версия для 1Script
- И многое другое
Требования
Платформа 8.3.10 и выше.
Мобильная платформа (проверено только на 8.3.15)
1Script >=1.1.1
Где взять
1С:Предприятие 8
https://github.com/vbondarevsky/Connector
1Script
https://github.com/vbondarevsky/1connector
Использование
1С:Предприятие 8
Скопируйте общий модуль КоннекторHTTP
к себе в конфигурацию.
1Script
opm install 1connector
Пример мощи библиотеки
Чем же хороша библиотека? Давай уже покажи пример.
Получим данные JSON
с помощью GET
-запроса:
Вот так это делается стандартными средствами 1С
ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL(Неопределено, Новый СертификатыУдостоверяющихЦентровОС);
Соединение = Новый HTTPСоединение("api.github.com", 443,,,, 30, ЗащищенноеСоединение);
Запрос = Новый HTTPЗапрос("/events");
Ответ = Соединение.Получить(Запрос);
Поток = Ответ.ПолучитьТелоКакПоток();
Кодировка = "utf-8"; // ну допустим мы знаем что там такая кодировка
Ридер = Новый ЧтениеJSON;
Ридер.ОткрытьПоток(Поток, Кодировка); // Кодировка в заголовке ответа
Результат = ПрочитатьJSON(Ридер);
Ридер.Закрыть();
А вот так с помощью Коннектора
Результат = КоннекторHTTP.GetJson("https://api.github.com/events");
Все! В Результат
будет десериализованный из JSON
ответ сервера. При этом:
- Библиотека сама разбила URL на составляющие
- Установила защищенное соединение
- Определила кодировку ответа из заголовков
- Десериализовала
JSON
И это достаточно простой пример. Всю мощь библиотеки рассмотрим далее.