5.5 KiB
Коннектор: удобный HTTP-клиент для 1С:Предприятие 8
В мире python очень популярна библиотека для работы с HTTP запросами - Requests (автор: Kenneth Reitz). Библиотека берет на себя всю рутину работы с HTTP запросами. Буквально в одну строку можно получать данные, отправлять, не заботясь о необходимости конструирования URL, кодирования данных и т.п. В общем библиотека очень мощная и проста в использовании.
В данной статье я расскажу о библиотеке Коннектор - “Requests” для мира 1С.
Требования
Платформа 8.3.10 и выше
Использование
Скопируйте модуль к себе в конфигурацию
Пример мощи библиотеки.
Чем же хороша библиотека? Давай уже покажи пример.
Получим данные JSON с помощью GET-запроса:
// 1С
ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL(Неопределено, Новый СертификатыУдостоверяющихЦентровОС);
Соединение = Новый HTTPСоединение("api.github.com", 443,,,, 30, ЗащищенноеСоединение);
Запрос = Новый HTTPЗапрос("/events");
Ответ = Соединение.Получить(Запрос);
Поток = Ответ.ИсходныйОтвет.ПолучитьТелоКакПоток();
Кодировка = "utf-8"; // ну допустим мы знаем что там такая кодировка
Ридер = Новый ЧтениеJSON;
Ридер.ОткрытьПоток(Поток, Кодировка); // Кодировка в заголовке ответа
Объект = ПрочитатьJSON(Ридер);
Результат = Ридер.Закрыть();
// Коннектор
Результат = КоннекторHTTP.РезультатКакJson(КоннекторHTTP.Get(“https://api.github.com/events));
Все! В Результат
будут данные в структуре.
При этом библиотека сама разбила URL на составляющие, установила защищенное соединение, порт. Определила кодировку ответа из заголовков и десериализовала JSON. И это достаточно простой пример. Всю мощь библиотеки рассмотрим далее от простого к сложному.
Возможности
TODO TODO TODO TODO TODO Создаем запрос
r = requests.get('http://httpbin.org/put')
r = requests.put('http://httpbin.org/put', data = {'key':'value'})
r = requests.delete('http://httpbin.org/delete')
r = requests.head('http://httpbin.org/get')
r = requests.options('http://httpbin.org/get')
Для GET
, OPTIONS
, HEAD
, POST
, PUT
, PATCH
, DELETE
есть соответствующие методы.
Или любой другой из HTTP-методов через вызов КоннекторHTTP.ВызватьМетод
Передача параметров в строку запроса (в URL)
ПараметрыЗапроса = Новый Структура;
ПараметрыЗапроса.Вставить(“name”, СтрРазделить("Вася,Федор", ","));
ПараметрыЗапроса.Вставить("salary", 100000);
Ответ = КоннекторHTTP.Get("https://httpbin.org/anything/params", ПараметрыЗапроса);
Если Ответ.КодСостояния = 200 Тогда
Результат = КоннекторHTTP.КакJson(Ответ);
КонецЕсли;
Ответ.URL
- итоговый URL
https://httpbin.org/anything/params?name=%D0%9C%D0%B0%D1%81%D1%81%D0%B8%D0%B2&name=%D0%9C%D0%B0%D1%81%D1%81%D0%B8%D0%B2&salary=100%C2%A0000
Коннектор подставил параметры в URL
Закодировал строку используя URLEncoding
Массив значений перевел последовательность ключ=значение
Содержимое ответа
Текст
JSON
Двоичные данные
Произвольные заголовки
Form-encoded POST
POST a Multipart-Encoded File
Response Status Codes
Response Headers
Cookies
Redirection and History
TODO: например, переадресация http -> https в yandex.ru. TODO: Можно показать пример поискового запроса
Timeouts
Errors and Exceptions
Продвинутые возможности
Session Objects
TODO: можно пример получения списка обновлений с сайта 1С с авторизацией https://infostart.ru/public/255881/