2019-01-15 14:27:31 +02:00
# Коннектор: удобный HTTP-клиент для 1С:Предприятие 8
В мире python очень популярна библиотека для работы с HTTP запросами - Requests (автор: Kenneth Reitz).
Библиотека берет на себя всю рутину работы с HTTP запросами.
Буквально в одну строку можно получать данные, отправлять, не заботясь о необходимости конструирования URL, кодирования данных и т.п.
В общем библиотека очень мощная и проста в использовании.
В данной статье я расскажу о библиотеке Коннектор - “Requests” для мира 1С.
2019-01-17 00:35:20 +02:00
## Требования
Платформа 8.3.10 и выше
## Использование
Скопируйте модуль к себе в конфигурацию
2019-01-15 14:27:31 +02:00
## Пример мощи библиотеки.
Чем же хороша библиотека? Давай уже покажи пример.
Получим данные 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)
2019-01-17 02:24:05 +02:00
Работать с параметрами запроса очень просто:
2019-01-15 14:27:31 +02:00
```bsl
ПараметрыЗапроса = Новый Структура;
2019-01-17 02:24:05 +02:00
ПараметрыЗапроса.Вставить("name", СтрРазделить("Иванов,Петров", ","));
ПараметрыЗапроса.Вставить("salary", Формат(100000, "ЧГ="));
2019-01-15 14:27:31 +02:00
2019-01-17 02:24:05 +02:00
Ответ = КоннекторHTTP.GetJson("https://httpbin.org/anything/params", ПараметрыЗапроса);
```
Поддерживается передача нескольких значений для одного параметра, достаточно указать в качестве значения ``Массив`` (см. ``name``).
Параметры можно задать:
- Явно в ``URL``
- Передать в параметре ``ПараметрыЗапроса``
- Скомбинировать оба варианта
Результат будет один и тот же:
- Коннектор подставит параметры в ``URL`` в виде пар ключ=значение
- Закодирует строку URL, используя ``URLEncoding``
- Выполнит запрос
Итоговое значение URL можно получить из свойства ответа ``URL``
```bsl
2019-01-15 14:27:31 +02:00
Ответ = КоннекторHTTP.Get("https://httpbin.org/anything/params", ПараметрыЗапроса);
```
2019-01-17 02:24:05 +02:00
``Ответ.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
2019-01-15 14:27:31 +02:00
2019-01-17 00:35:20 +02:00
## Содержимое ответа
### Текст
### JSON
### Двоичные данные
2019-01-15 14:27:31 +02:00
## Произвольные заголовки
2019-01-17 00:35:20 +02:00
2019-01-15 14:27:31 +02:00
## Form-encoded POST
2019-01-17 00:35:20 +02:00
2019-01-15 14:27:31 +02:00
## POST a Multipart-Encoded File
https://wonderland.v8.1c.ru/blog/novye-instrumenty-dlya-raboty-s-dvoichnymi-dannymi-obespechivayut-kak-posledovatelnyy-dostup-k-danny/
2019-01-17 00:35:20 +02:00
## Response Status Codes
2019-01-15 14:27:31 +02:00
## Response Headers
2019-01-17 00:35:20 +02:00
2019-01-15 14:27:31 +02:00
## Cookies
2019-01-17 00:35:20 +02:00
2019-01-15 14:27:31 +02:00
## Redirection and History
TODO: например, переадресация http -> https в yandex.ru.
2019-01-17 00:35:20 +02:00
TODO: Можно показать пример поискового запроса
2019-01-15 14:27:31 +02:00
## Timeouts
## Errors and Exceptions
2019-01-17 00:35:20 +02:00
2019-01-15 14:27:31 +02:00
## Продвинутые возможности
## Session Objects
TODO: можно пример получения списка обновлений с сайта 1С с авторизацией
https://infostart.ru/public/255881/
2019-01-17 00:35:20 +02:00
2019-01-15 14:27:31 +02:00
## SSL Cert Verification
2019-01-17 00:35:20 +02:00
2019-01-15 14:27:31 +02:00
## Client Side Certificates
## POST Multiple Multipart-Encoded Files
## Custom Authentication
2019-01-17 00:35:20 +02:00
2019-01-15 14:27:31 +02:00
## Proxies
## Encodings
2019-01-17 00:35:20 +02:00
## HTTP Verbs
## Custom Verbs
2019-01-15 14:27:31 +02:00
2019-01-17 00:35:20 +02:00
## ZGip и deflate encoding - автоматически