# Коннектор: удобный HTTP-клиент для 1С:Предприятие 8 В мире python очень популярна библиотека для работы с HTTP запросами - Requests (автор: Kenneth Reitz). Библиотека берет на себя всю рутину работы с HTTP запросами. Буквально в одну строку можно получать данные, отправлять, не заботясь о необходимости конструирования URL, кодирования данных и т.п. В общем библиотека очень мощная и проста в использовании. В данной статье я расскажу о библиотеке Коннектор - “Requests” для мира 1С. ## Требования Платформа 8.3.10 и выше ## Использование Скопируйте модуль к себе в конфигурацию ## Пример мощи библиотеки. Чем же хороша библиотека? Давай уже покажи пример. Получим данные JSON с помощью GET-запроса: ```bsl // 1С ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL(Неопределено, Новый СертификатыУдостоверяющихЦентровОС); Соединение = Новый HTTPСоединение("api.github.com", 443,,,, 30, ЗащищенноеСоединение); Запрос = Новый HTTPЗапрос("/events"); Ответ = Соединение.Получить(Запрос); Поток = Ответ.ИсходныйОтвет.ПолучитьТелоКакПоток(); Кодировка = "utf-8"; // ну допустим мы знаем что там такая кодировка Ридер = Новый ЧтениеJSON; Ридер.ОткрытьПоток(Поток, Кодировка); // Кодировка в заголовке ответа Объект = ПрочитатьJSON(Ридер); Результат = Ридер.Закрыть(); ``` ```bsl // Коннектор Результат = КоннекторHTTP.РезультатКакJson(КоннекторHTTP.Get(“https://api.github.com/events)); ``` Все! В ``Результат`` будут данные в структуре. При этом библиотека сама разбила URL на составляющие, установила защищенное соединение, порт. Определила кодировку ответа из заголовков и десериализовала JSON. И это достаточно простой пример. Всю мощь библиотеки рассмотрим далее от простого к сложному. ## Возможности TODO TODO TODO TODO TODO Создаем запрос ```bsl 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) Работать с параметрами запроса очень просто: ```bsl ПараметрыЗапроса = Новый Структура; ПараметрыЗапроса.Вставить("name", СтрРазделить("Иванов,Петров", ",")); ПараметрыЗапроса.Вставить("salary", Формат(100000, "ЧГ=")); Ответ = КоннекторHTTP.GetJson("https://httpbin.org/anything/params", ПараметрыЗапроса); ``` Поддерживается передача нескольких значений для одного параметра, достаточно указать в качестве значения ``Массив`` (см. ``name``). Параметры можно задать: - Явно в ``URL`` - Передать в параметре ``ПараметрыЗапроса`` - Скомбинировать оба варианта Результат будет один и тот же: - Коннектор подставит параметры в ``URL`` в виде пар ключ=значение - Закодирует строку URL, используя ``URLEncoding`` - Выполнит запрос Итоговое значение URL можно получить из свойства ответа ``URL`` ```bsl Ответ = КоннекторHTTP.Get("https://httpbin.org/anything/params", ПараметрыЗапроса); ``` ``Ответ.URL`` - https://httpbin.org/anything/params?name=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2&name=%D0%9F%D0%B5%D1%82%D1%80%D0%BE%D0%B2&salary=100000 ## Содержимое ответа ### Текст ### JSON ### Двоичные данные ## Произвольные заголовки ## Form-encoded POST ## POST a Multipart-Encoded File https://wonderland.v8.1c.ru/blog/novye-instrumenty-dlya-raboty-s-dvoichnymi-dannymi-obespechivayut-kak-posledovatelnyy-dostup-k-danny/ ## 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/ ## SSL Cert Verification ## Client Side Certificates ## POST Multiple Multipart-Encoded Files ## Custom Authentication ## Proxies ## Encodings ## HTTP Verbs ## Custom Verbs ## ZGip и deflate encoding - автоматически