1
0
mirror of https://github.com/vbondarevsky/Connector.git synced 2024-11-24 08:42:15 +02:00
Connector/README.md

6.1 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.GetJson("https://httpbin.org/anything/params", ПараметрыЗапроса);

Поддерживается передача нескольких значений для одного параметра, достаточно указать в качестве значения Массив (см. name).

Параметры можно задать:

  • Явно в URL
  • Передать в параметре ПараметрыЗапроса
  • Скомбинировать оба варианта

Результат будет один и тот же:

  • Коннектор подставит параметры в URL в виде пар ключ=значение
  • Закодирует строку URL, используя URLEncoding
  • Выполнит запрос

Итоговое значение URL можно получить из свойства ответа URL

Ответ = Коннектор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 - автоматически