0. Техподдержка 31.01.19 00:26

Коннектор: удобный HTTP-клиент для 1С:Предприятие 8

Коннектор - библиотека для работы с HTTP запросами. Библиотека берет на себя всю рутину работы с HTTP запросами. Буквально в одну строку можно получать данные, отправлять, не заботясь о необходимости конструирования URL, кодирования данных и т.п.

Перейти к публикации

7OH; mib7; +2 Ответить
Вознаграждение за ответ
Показать полностью
Лучшие комментарии
46. Техподдержка 18.02.19 19:56
UPDATE: Доступна версия для 1Script
opm install 1connector
Krio2; mickey.1cx; Perfolenta; karachev_og; kote; mvxyz; Evg-Lylyk; nixel; Danil.Potapov; ardarik; ardn; Aleskey_K; ktb; EGOLEGE; Merc; GreenDragon; +16 Ответить
Остальные комментарии
Избранное Подписка Сортировка: Древо
98. vlad1976 03.09.19 23:55 Сейчас в теме
как тут
данные в КоннекторHTTP.ВызватьМетодВСеансе Json передать?


Ответ = КоннекторHTTP.ВызватьМетодВСеансе(Сессия, "POST", Ответ.URL, Json);
99. Техподдержка 04.09.19 00:18
(98)
ДополнительныеПараметры = Новый Структура("Json", Json);
Ответ = КоннекторHTTP.ВызватьМетодВСеансе(Сессия, "POST", Ответ.URL, ДополнительныеПараметры);

Вообще, у этого метода достаточно подробная документация
100. kote 505 30.09.19 00:48 Сейчас в теме
Подскажите, библиотека будет работать в мобильном приложении?
(100) Без изменений не заработает. Точно нужно убрать GZip/Zip, т.к. объект ЧтениеZipФайла не доступен в приложении. Записал себе сделать совместимость
(100) Теперь работает и в мобильном приложении
104. KUAvanesov 17.10.19 14:52 Сейчас в теме
Друзья, подскажите:
Нужно отправить пост запрос с параметром и телом запроса.
какая конструкция должна быть с использованием этого коннектора?

ответ = post(Запрос,Параемтры,ДополнительныеПараметры);


Куда ложить тело а куда параметры?
(104) Речь про multipart/form-data ?
Что в теле?
106. KUAvanesov 17.10.19 15:00 Сейчас в теме
(105)
нет.
Мой запрос:
http://suz2.crpt.ru/api/v2/light/orders?omsId=531af4d8-409c-49cb

где omsId=531af4d8-409c-49cb - это параметр запроса.

В запросе я передаю json строку.

Как мне используя ваш коннектор выполнить этот запрос?
(106)
Json = Новый Структура("key", "value");
	
Параметры = Новый Соответствие;
Параметры.Вставить("omsId", "531af4d8-409c-49cb");
ДополнительныеПараметры = Новый Структура("ПараметрыЗапроса", Параметры);
Ответ = КоннекторHTTP.PostJson(
	"https://suz2.crpt.ru/api/v2/light/orders", Json, ДополнительныеПараметры);
	
ДополнительныеПараметры = Новый Структура("ПараметрыЗапроса, Json", Параметры, Json);
Ответ = КоннекторHTTP.Post(
	"https://suz2.crpt.ru/api/v2/light/orders", Неопределено, ДополнительныеПараметры);
Показать
KUAvanesov; +1 Ответить
108. KUAvanesov 18.10.19 11:00 Сейчас в теме
(107)
Параметры


ок. А куда вставлять заголовки?
Пример тот же, но нужно вставить заголовок:

clientToken: "token"

Куда его поместить?
(108)
Заголовки = Новый Соответствие;
Заголовки.Вставить("key", "value");
ДополнительныеПараметры.Вставить("Заголовки", Заголовки);


Все же есть в описание. См. Произвольные HTTP заголовки
110. aicom 10 10.11.19 14:58 Сейчас в теме
В процедуре ПодготовитьТелоЗапроса стоит заменить конструкцию
ИначеЕсли НЕ ЗначениеЗаполнено(Json) Тогда
на
ИначеЕсли Json <> Неопределено Тогда.
Это позволит отправлять запросы с пустым содержимым Json, по типу этого:
POST /v2/posting/fbs/act/create HTTP/1.1
Host: api-seller.ozon.ru/apiref/ru/
Content-Type: application/json

{}
JohnyDeath; +1 Ответить
112. Darklight 21 22.11.19 16:12 Сейчас в теме
Отличная библиотека! Но...

Файлы = Новый Массив;
Файлы.Добавить(Новый Структура("Имя,Данные,ИмяФайла", "f1", Base64Значение("ZmlsZTE="), "file1.txt"));
Файлы.Добавить(Новый Структура("Имя,Данные,ИмяФайла", "f2", Base64Значение("ZmlsZTI="), "file2.txt"));

Данные = Новый Структура("field1,field2", "value1", "Значение2");

Результат = КоннекторHTTP.PostJson("https://httpbin.org/post", Неопределено, Новый Структура("Файлы,Данные", Файлы, Данные));
Показать


Зачем так всё "усложнять" с передачей данных формы - сразу двумя путями:

- через 2-ой параметр
Результат = КоннекторHTTP.PostJson("https://httpbin.org/post", Данные, Новый Структура("Файлы", Файлы));


- через 3-тий параметр "ДополнительныеПараметры" (как в примере выше).

Так реализовано было в оригинальном Python.Requests (простите не знаком с этой библиотекой)?

На мой взгялд, этот второй параметр ("Данные") тут лишний - в большинстве случаев (кроме тривиальных) всегда,так-или, иначе будет потребность задействовать 3-тий параметр "ДополнительныеПараметры" - а значит 2-той почти всегда будет пропущзен = неопределено - даже если надо передать данные формы - их удобнее передать через "ДополнительныеПараметры".

Я понимаю, что в Python.Requests наверняка для этих целей используют именованные реквизиты, а не структуру "ДополнительныеПараметры", но считаю зря - параметр данных формы Вы оставили отдельным аргументом.


И ещё о сессиях (наверное тоже взято из Python.Requests?)

Сессия = КоннекторHTTP.СоздатьСессию();
Ответ = КоннекторHTTP.ВызватьМетодВСеансе(Сессия, "GET", "https://releases.1c.ru/total");


На мой взгляд, сессии нужно было унифицировать с обычными методами http-команд, передавая сессию либо отдельным аргментом (влед за "ДополнительнымиПараметрами", либо, что, наверное, лучше - передавать в самом аргументе "ДополнительнымиПараметрами".
Сессия = КоннекторHTTP.СоздатьСессию();
Ответ = КоннекторHTTP.Get("https://releases.1c.ru/total",,Новый Структура("Сессия", Сессия));


И не плодить отдельные и более общие методы для работы в сессиях
Ответ = КоннекторHTTP.ВызватьМетодВСеансе(Сессия, "POST", Ответ.URL, Новый Структура("Данные", Данные));


А и ещё, в одно случае у вас это "Сессия": "КоннекторHTTP.СоздатьСессию()"
А в другом - "Сеанс": "КоннекторHTTP.ВызватьМетодВСеансе"
Диссонанс именования одной и той же сущности

P.S.
Ну и хотелось бы иметь примеры работы с OData - и, в частности, расширение библиотеки для работы с REST-API 1С Предприятие 8 (как с ИБ, так и для администрирования сервера приложений - хотя последнее уже не так актуально, появлением в 1С объекта "АдминистрированиеСервера"; но REST-API очень даже актуален). да и вообще - хорошо было бы показать "низкоуровневые" примеры работы в WEB-сервисами

Но это уже хателки
JohnyDeath; +1 Ответить
113. SlaSla 20 23.11.19 08:01 Сейчас в теме
Спасибо огромное за библиотеку!
Вот бы еще найти аналогичное для 7.7 :)
114. ruslandia1998 24.11.19 17:28 Сейчас в теме
Результат = КоннекторHTTP.GetJson("https://api.github.com/events");
Крашит Предприятие, версия 8.3.10.2252
115. starovton 5 29.11.19 13:21 Сейчас в теме
как с помощью библы получать данные в "бесконечном" потоке?
(115) в библиотеки используются средства платформы, а платформа умеет возвращать ответ только целиком. Ну т.е. сейчас никак
119. dimauspeh 02.12.19 14:33 Сейчас в теме
Помогите пожалуйста! Не проходт авторизацию!

Процедура Кнопка6Нажатие(Элемент)
	Заголовки = Новый Соответствие;
Заголовки = Новый Соответствие();
	Заголовки.Вставить("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
   Заголовки.Вставить("Referer", "https://b2b.tui.ua/default.php?page=cl_refer&CLAIM=4203868");
   Заголовки.Вставить("Connection", "keep-alive");
	Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded");
	Заголовки.Вставить("Upgrade-Insecure-Requests", "1");
	Заголовки.Вставить("Content-Charset", "utf-8");
	Заголовки.Вставить("Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3");
Заголовки.Вставить("Accept-Encoding", "gzip, deflate, br");
Заголовки.Вставить("Accept-Charset", "utf-8");
Заголовки.Вставить("Cookie", Куки);

Параметры = Новый Соответствие;
ДополнительныеПараметры = Новый Структура("ПараметрыЗапроса", Параметры);

Аутентификация = Новый Структура("login, Password","Мой логин","Мой пароль");

ДополнительныеПараметры.Вставить("Заголовки", Заголовки);
ДополнительныеПараметры.Вставить("Аутентификация", Аутентификация);
Результат = КоннекторHTTP.КакТекст(КоннекторHTTP.Post("https://b2b.tui.ua/default.php?page=cl_refer&CLAIM=4203868", Неопределено, ДополнительныеПараметры));
//ОтветСервера = Результат.ПолучитьТелоКакСтроку();
Данные = Новый Структура;
Данные.Вставить("samo_action", "logon");
Данные.Вставить("logon_key", ИдентификаторСессии);
Данные.Вставить("login", "Мой логин");
Данные.Вставить("passwd", "Мой Пароль");

Таймаут = Новый Структура("Таймаут", 5);
ДополнительныеПараметры.Вставить("Таймаут", Таймаут);

Ответ = КоннекторHTTP.Post("https://b2b.tui.ua/default.php?page=cl_refer&CLAIM=4203868", Данные);

Ответ = КоннекторHTTP.Post("https://b2b.tui.ua/default.php?page=cl_refer&CLAIM=4203868", Данные,ДополнительныеПараметры);
Показать
(119) Вы не совсем то, что нужно делаете.
Смотрите раздел Работа в рамках сессии. Там пример похож на то, что вам нужно
121. dimauspeh 20.12.19 16:21 Сейчас в теме
(120) Спасибо! Разобрался! В обычном приложении все супер. А как в УФ подключить библиотеку?
(121) Добавить общий модуль (просто скопировать из конфигурации библиотеки).
Работает только в серверном контексте исполнения
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Санкт-Петербург
зарплата от 110 000 руб. до 150 000 руб.
Полный день

Консультант-аналитик 1С
Москва
зарплата до 200 000 руб.
Полный день

Программист 1С
Тольятти
зарплата от 70 000 руб.
Полный день

Программист 1С
Москва
зарплата до 160 000 руб.
Полный день

Программист 1С
Воронеж
зарплата от 70 000 руб.
Полный день