HTTP-клиент

11.03.24

Интеграция - WEB-интеграция

Подсистема 1С для работы с HTTP.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
HTTP-клиент:
.cf 2,51Mb ver:2.5.0
53
53 Скачать (1 SM) Купить за 1 850 руб.
HTTP-клиент (обновление):
.cfu 2,47Mb ver:2.5.0
2
2 Скачать (1 SM) Купить за 1 850 руб.
HTTP-клиент (расширение):
.cfe 2,50Mb ver:2.5.0
25
25 Скачать (1 SM) Купить за 1 850 руб.
v1 HTTP-клиент:
.cf 139,05Kb ver:1.11.0
4
4 Скачать (1 SM) Купить за 1 850 руб.
v1 HTTP-клиент (обновление):
.cfu 122,01Kb ver:1.11.0
6
6 Скачать (1 SM) Купить за 1 850 руб.
v1 HTTP-клиент (расширение):
.cfe 137,54Kb ver:1.11.0
5
5 Скачать (1 SM) Купить за 1 850 руб.

Подсистема 1С для работы с HTTP

 

Представляет собой библиотеку методов и инструменты выполнения HTTP-запросов. Реализованы:

  • исполнение запросов по URI (Клиент "понимает" IDN)
  • исполнять запросы можно на клиенте (асинхронно) и на сервере, а также в мобильном приложении
  • текучий интерфейс методов настройки выполнения запроса
  • методы GET, POST, PUT, DELETE, HEAD, PATCH
  • передача в теле запроса текста, данных файлов и двоичных данных
  • хранение данных результатов запросов в рамках сессии (Cookie, перенаправления)
  • получение сжатого контента в ответе
  • консоль интерактивного выполнения запросов
  • генерация кода 1С, интерактивно настроенного в Консоли запроса
  • импорт файла Postman (формат файла v2.1)
  • настройка Консоли в соответствии с командой консольной утилиты curl и генерация команды curl по настроенной Консоли
  • повторение попыток выполнить запрос после неуспешного результата (retry) с настраиваемой задержкой (backoff)

 

 
 Зачем

 

Кредо системы: лаконичная результативность. К чему и стремимся.

Репозиторий на github

Документация

Примеры использования

Является open source с лицензией Apache 2.0

 

Пример кода

 

В первую очередь Клиент – это библиотека методов выполнения HTTP-запросов.

Версия 1 использует синхронные вызовы, поэтому при вызове функций выполнения запроса с клиента и с сервера тип ответа отличаться не будет.

В версии 2 вызовы с клиента асинхронные – функции выполнения запроса вернут Обещание.

Оформлял экспортные методы модулей с комментариями. Все методы выполнения представлены в модуле КлиентHTTPКлиентСервер. Константные значения – в КлиентHTTPПовтИсп. Пара примеров:

 

Просто GET

 

// Для версии 1, на сервере или для внешнего соединения
Ответ = КлиентHTTPКлиентСервер.Получить("https://ya.ru");

// На клиенте для версии 2
Ответ = Ждать КлиентHTTPКлиентСервер.Получить("https://ya.ru");

 

Установка параметров запроса

 

Адрес = "https://evilinsult.com/generate_insult.php";

// Добавим параметры URL: ?lang=ru&type=json
ПЗ = КлиентHTTPКлиентСервер.НовыеПараметрыЗапроса();
КлиентHTTPКлиентСервер
    .ДобавитьПараметр(ПЗ, "lang", "ru")
    .ДобавитьПараметр(ПЗ, "type", "json");

Ответ = КлиентHTTPКлиентСервер.Получить(Адрес, ПЗ); // на вызов с клиента в версии 2 вернётся Обещание
Текст = ПолучитьСтрокуИзДвоичныхДанных(Ответ.Тело);

или же

// Для версии 1, на сервере или для внешнего соединения
Ответ = КлиентHTTPКлиентСервер.Получить(
    "https://evilinsult.com/generate_insult.php?lang=ru&type=json"
);

// На клиенте для версии 2
Ответ = Ждать КлиентHTTPКлиентСервер.Получить(
    "https://evilinsult.com/generate_insult.php?lang=ru&type=json"
);

 

Сохранение тела ответа в файл

 

Адрес = "https://epic.gsfc.nasa.gov/archive/natural/2015/10/31/png/epic_1b_20151031074844.png";

ДП = КлиентHTTPКлиентСервер.НовыеДополнительныеПараметры();
Ответ = КлиентHTTPКлиентСервер
    .УстановитьИмяВыходногоФайла(ДП, "С:\tmp\pic.png")
    .Получить(Адрес, , ДП);

 

POST текста

 

Адрес = "https://jsonplaceholder.typicode.com/posts";
Данные = "{""title"": ""foo"", ""body"": ""bar"", ""userId"": 1}";

ДП = КлиентHTTPКлиентСервер.НовыеДополнительныеПараметры();
Ответ = КлиентHTTPКлиентСервер
    .УстановитьТипMIME(ДП, КлиентHTTPПовтИсп.ТипMIMEJSON())
    .УстановитьКодировку(ДП, КлиентHTTPПовтИсп.КодировкаUTF16())
    .ОтправитьТекст(Адрес, Данные, ДП);

 

POST multipart/form-data

 

Адрес = "https://httpbin.org/post";

ПФ = КлиентHTTPКлиентСервер.НовыеПоляФормы();
ФайлПоля = Новый Файл("C:\temp\1.png");

Ответ = КлиентHTTPКлиентСервер
    .ДобавитьПолеФормыФайл(ПФ, "my_file", ФайлПоля, ФайлПоля.Имя, КлиентHTTPСлужебный.ТипMIMEРасширенияФайла(ФайлПоля.Расширение))
    .ДобавитьПолеФормыТекст(ПФ, "user_name", "Имярек")
    .ОтправитьДанныеФормы(Адрес, ПФ);

 

POST application/x-www-form-urlencoded

 

Адрес = "https://httpbin.org/post";
ПФ = КлиентHTTPКлиентСервер.НовыеПоляФормы();

Ответ = КлиентHTTPКлиентСервер
    .ДобавитьПолеHTMLФормы(ПФ, "user_name", "Имярек")
    .ДобавитьПолеHTMLФормы(ПФ, "role", "Сотрудник")
    .ОтправитьДанныеHTMLФормы(Адрес, ПФ);

 

Авторизация

 

ДП = КлиентHTTPКлиентСервер.НовыеДополнительныеПараметры();
Ответ = КлиентHTTPКлиентСервер
    .УстановитьDigestАвторизацию(ДП, "login", "password")
    .Получить("http://192.168.1.1", , ДП);

 

Преобразование тела ответа

 

// Объект идентификатора ресурса соответствующий URI: https://evilinsult.com/generate_insult.php?lang=ru&type=json
оАдрес = КлиентHTTPКлиентСервер.ОбъектИдентификатораРесурса("evilinsult.com", , "generate_insult.php?lang=ru&type=json");

ПЗ = КлиентHTTPКлиентСервер.НовыеПараметрыЗапроса();
ДП = КлиентHTTPКлиентСервер.НовыеДополнительныеПараметры();

// В Ответ.Тело получаем структуру
Ответ = КлиентHTTPКлиентСервер
    .ТелоОтветаКакJSON(ДП)
    .Получить(оАдрес, ПЗ, ДП);

 

Переиспользование HTTP-соединения

 

ДП = КлиентHTTPКлиентСервер.НовыеДополнительныеПараметры();

КлиентHTTPКлиентСервер.ПереиспользоватьСоединение(ДП);

// Первый после включения режима переиспользования запрос сохранит объект HTTP-соединения
Ответ = КлиентHTTPКлиентСервер.Получить("https://ya.ru", , ДП);

Для я = 1 По 100 Цикл
    ПЗ = КлиентHTTPКлиентСервер.НовыеПараметрыЗапроса();
    Ответ = КлиентHTTPКлиентСервер
        .ДобавитьПараметр(ПЗ, "nr", XMLСтрока(я))
        .Получить("https://ya.ru/", ПЗ, ДП); // объект HTTP-соединения будет переиспользован
КонецЦикла;

 

При каждом вызове функции ПереиспользоватьСоединение очищается сохранённый Объект HTTP-соединения. Проверка соответствия конфигурации соединения текущего запроса и сохранённого HTTP-соединения не осуществляется.

 

Повторные попытки выполнить запрос с задержкой

 

ДП = КлиентHTTPКлиентСервер.НовыеДополнительныеПараметры();

Ответ = Ждать КлиентHTTPКлиентСервер
	.ЭкспоненциальноОтложенныеВыполнения(ДП, , , 3, 600)
	.Получить("http://127.0.0.0", , ДП);

 

ВНИМАНИЕ! Неуспешный HTTP-запрос вызывает исключение, что помешает зафиксировать цепочку транзаций, в которой выполнялся запрос, даже если в итоге одна из попыток его выполнения будет успешной.

 

Использование сессии (включение Cookie и перенаправлений)

 

ДП = КлиентHTTPКлиентСервер.НовыеДополнительныеПараметры();

КлиентHTTPКлиентСервер.ИспользоватьСессию(ДП);

// На вызов функций выполнения запроса с клиента в версии 2 вернётся Обещание - имеет смысл Ждать
Ответ1 = КлиентHTTPКлиентСервер.Получить("https://www.google.com/search?q=infostart", , ДП);
Ответ2 = КлиентHTTPКлиентСервер.Получить("https://play.google.com/store/search?q=infostart", , ДП);

// КукиЗдесь = ДП.Сессия.Печенье;
// Перенаправления сработают автоматически

 

Стандартный стиль кода

 

Если текучий интерфейс вам не подходит:

Адрес = "https://evilinsult.com/generate_insult.php";

// Обернём длинное имя общего модуля в переменную
мКлиент = КлиентHTTPКлиентСервер;

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

мКлиент.ДобавитьПараметр(ПЗ, "lang", "ru")
мКлиент.ДобавитьПараметр(ПЗ, "type", "json");
мКлиент.ТелоОтветаКакJSON(ДП);

Ответ = мКлиент.Получить(Адрес, ПЗ, ДП);

 

Консоль

 

Неосновная, но приятная фича Клиента – Консоль. Инструмент интерактивного выполнения запросов с кодогенерацией.

 

           

 

Обработка КлиентHTTP. Интерфейсом ориентировался на Postman. Сложностей по части UX (кроме багов) возникнуть не должно. В Консоли можно импортировать файл Postman или распарсить команду curl. Получается мощная связка:

  1. Импортируем (Postman или curl)
  2. Получаем код 1С
  3. PROFIT!

Так же можно сделать обратное – собрать запрос в Консоли и получить команду curl.

 

 

Результат выполнения запроса со статистикой выполнения

 

История выполненных запросов с возможностью экспорта/импорта

 

Окно редактирования Cookie с примером редактирования текста поля

 

Окно сгенерированного Консолью кода (версия 2)

 

Установка

 

Разрабатывается на платформе 8.3.21.1302

Тестировалось на платформе для мобильных устройств 8.3.18.77

 

Ограничения версии 2:

  • Требуемая минимальная версия платформы 8.3.18

 

Ограничения версии 1:

  • Требуемая минимальная версия платформы 8.3.10
  • Используются синхронные вызовы
  • Не для мобильной платформы

 

HTTP-клиент встраивается в целевую конфигурацию сравнением / объединением. Объединять по подсистеме файла "КлиентHTTP".

Для обычных форм:

  • удостоверьтесь, что в свойствах конфигурации активна опция "Использовать управляемые формы в толстом клиенте и обычном режиме"
  • для общих модулей КлиентHTTPКлиентСервер, КлиентHTTPПовтИсп и КлиентHTTPСлужебный в свойствах установите опцию "Клиент (обычное приложение)"

 

PS

 

С интересом приму помощь в развитии Клиента. Клонируйте репозиторий, создавайте issue, пушьте пул-реквесты, пишите комментарии и главное – пользуйтесь.

Бесплатно Клиент скачать можно тут. А если хотите выразить благодарность в виде SM – с радостью буду за них приобретать на Инфостарте разработки коллег.

конфигурация http запросы клиент url перенаправления аутентификация cookie http-client http-requests fluent асинхронность punycode дка модуль библиотека postman curl idn кодогенерация

См. также

Сайты и интернет-магазины WEB-интеграция Системный администратор Программист Пользователь Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме.

36000 руб.

03.08.2020    17799    19    22    

17

Сайты и интернет-магазины Интеграция WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Управленческий учет Платные (руб)

Интеграция 1С и Битрикс 24. Разработка имеет двухстороннюю синхронизацию 1С и Bitrix24 задачами. Решение позволяет создавать пользователя в 1С из Битрикс24 и наоборот. Данная разработка технически подходит под все основные конфигурации линейки продуктов 1С:Предприятие 8.3 (платформа начиная с 8.3.23). При приобретении предоставляется 1 месяц бесплатных обновлений разработки. Доступна демо-версия продукта с подключением Вашего Битрикс24

5040 руб.

04.05.2021    19881    13    17    

17

WEB-интеграция 8.3.8 Конфигурации 1cv8 Автомобили, автосервисы Беларусь Украина Россия Казахстан Управленческий учет Платные (руб)

Расширение предназначено для конфигурации "1С:Предприятие 8. Управление Автотранспортом. ПРОФ". Функционал модуля: 1. Заполнение регистров сведений по подсистеме "Мониторинг", а именно: события по мониторингу, координаты по мониторингу, пробег и расход по мониторингу, текущее местоположение ТС по мониторингу 2. Заполнение путевого листа: пробег по мониторингу, время выезда/заезда, табличная часть ГСМ, места стоянок по геозонам. 3. Отчеты по данным загруженным в регистры сведений. 4. Предусмотрена автоматическая загрузка данных в фоновом режиме (условия работы данной загрузке читайте в описании товара) Модуль работает без включенной константы по настройкам мониторинга. Модуль формы предоставляется с открытым кодом, общий модуль защищен. Любой заинтересованный пользователь, имеет возможность скачать демо-версию расширения.

22656 руб.

25.05.2021    14435    42    8    

18

WEB-интеграция Программист Руководитель проекта Платформа 1С v8.3 Конфигурации 1cv8 1С:Франчайзи, автоматизация бизнеса Платные (руб)

Расширение значительно упрощает написание API на 1С. Веб программисты получают простой и понятный доступ к 1С. Описание API создаётся автоматически и представляется в виде удобном как для человека, так и для программной обработки.

24000 руб.

27.09.2024    1201    1    0    

3
Отзывы
52. SpaceOfMyHead 196 25.02.24 20:54 Сейчас в теме
Выпустил версии 2.5.0 и 1.11.0

Новое

- Использование указанных файлов сертификатов клиента и УЦ для установки защищённого соединения (библиотека и Клиент)

Улучшено

- Управляемое отображение секретов в кодогенерации и команде curl (Клиент)
- Подготовка и выполнение запроса полностью в целевом контексте (Клиент)

Исправлено

- Инициализация типа тела запроса при старте (Клиент)
- Экранирование кавычек и обработка множественных пробелов при работе с командой curl (Клиент)
- Автоматический переход на представление тела ответа как картинка (Клиент)
Остальные комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Segate 240 28.07.21 10:03 Сейчас в теме
Вопрос немного не по теме:
Как передать полученные куки в поле html?
2. SpaceOfMyHead 196 28.07.21 10:20 Сейчас в теме
(1) Получить доступ к Cookie можно так.

Сессия находится в дополнительных параметрах. В сессии есть поле "Печенье". Допустим, вы храните в переменной "ДП" настроенные дополнительные параметры выполнения запроса. Тогда можно либо обратиться непосредственно к Печенью:

х = ДП.Сессия.Печенье; // тип Соответствие


либо сделать копию и обратиться к копии:

Копия = КлиентHTTPКлиентСервер.НовыеДополнительныеПараметры();
КлиентHTTPКлиентСервер.СкопироватьПеченье(Копия, ДП);
х = Копия.Сессия.Печенье;
15. Serg O. 297 29.07.21 07:58 Сейчас в теме
(2) куки в сессии, а как ту же самую сессию (не новую, а ту, где куки были), получить?
Или Через нлвый... Вовсе не новый, а старый клиент http?
16. SpaceOfMyHead 196 29.07.21 11:13 Сейчас в теме
(15) "Сессия" – внутренний объект дополнительных параметров. Клиент сам позаботится о сборе и использовании Cookie. Использование сессии добавил в примеры кода.

Если вам потребовалась внутрянка, то просто возьмите сессию со всем содержимым из дополнительных параметров. Я не делал геттеров для внутренностей сессии. Если вы лезете внутрь, то делаете это намеренно.

Однако есть служебная процедура копирования Cookie между дополнительными параметрами выполнения запроса:
КлиентHTTPКлиентСервер.СкопироватьПеченье(ПараметрыПриемник, ПараметрыИсточник)

Пример использования в коде формы Консоли (команда "Выполнить").
3. Segate 240 28.07.21 10:23 Сейчас в теме
(2) а теперь мне нужно передать эти куки в поле html, чтобы получить доступ к данным после авторизации.
4. SpaceOfMyHead 196 28.07.21 10:39 Сейчас в теме
(3) Если вы выполняете запросы к внешним сервисам через Клиент, то система сама подставит куки (при наличии) куда надо (заголовок Cookie) и отправит их. С ответом сервиса вы уже работаете самостоятельно.

Большего сказать не могу, не знаю подробностей вашей ситуации.
27. SpaceOfMyHead 196 12.09.21 11:21 Сейчас в теме
(3) Смотрите.

Любой http-клиент передаёт данные авторизации в заголовках очередного запроса (есть нюансы, а в принципе - так). Cookie - это один из заголовков.

Страница, которую мы видим в браузере, приходит в теле ответа (опять же зачастую) - приходит текстом HTML.

ПолеHTML в платформе как раз для того, чтобы, используя движок браузера, отобразить этот HTML в "человеческом" виде.

Так что ПолеHTML и попытка авторизоваться - разные истории.

И сабж берёт всю эту низкоуровневую возьню с авторизацией на себя под капотом.
29. Segate 240 13.09.21 10:35 Сейчас в теме
(27)
ж берёт всю эту низкоуровневую возьню с авторизацией на себя под капотом


Понимаю, но целевой интернет портал - очень плохо работает с авторизацией, а так же с редиректом после авторизации... и хочется фронтовые запросы на авторизацию проводить самостоятельно... а в поле http уже передать готовую куку полученную при авторизации в другом месте.
Второй вариант - в поле html передавать сначала скрипт для авторизации, а потом уже делать редирект
5. rabid_otter 134 28.07.21 10:47 Сейчас в теме
круто. но зачем, если есть Postman / SoapUI?
6. SpaceOfMyHead 196 28.07.21 10:54 Сейчас в теме
(5)Клиент – это не только консоль, но и библиотека методов для кодинга.
8. rabid_otter 134 28.07.21 11:21 Сейчас в теме
(6) да, видел уже какой-то клиент HTTP-запросов здесь. но мне чего-то не зашло. хорошо, что делаете что-то в этом направлении.
10. SpaceOfMyHead 196 28.07.21 11:44 Сейчас в теме
(8)
не зашло


Какие потребности остались не закрыты?
28. SpaceOfMyHead 196 12.09.21 11:30 Сейчас в теме
(5) Теперь можно импортировать запросы из Postman и транслировать их в код 1С в консоли Клиента!
31. SpaceOfMyHead 196 16.12.21 22:08 Сейчас в теме
(5) Теперь можно скормить Консоли команду curl, и Консоль настроит запрос в соответствии с командой!
34. rabid_otter 134 17.12.21 00:24 Сейчас в теме
(31) ура. вы придумали Insomnia :) но все равно огромный лойс за ваш труд.
35. SpaceOfMyHead 196 17.12.21 14:21 Сейчас в теме
(34)
вы придумали Insomnia


И всё же я настаиваю: Клиент прежде всего про набор методов и удобство их использования. Консоль Клиента (а-ля Insomnia, Postman, SoapUI) - просто жирный плюс к библиотеке методов.
7. vano-ekt 124 28.07.21 11:16 Сейчас в теме
(0) Консоль HTTP запросов (ИР)
9. SpaceOfMyHead 196 28.07.21 11:27 Сейчас в теме
(7) А там можно в форме тела POST передавать файлы? А там Set-Cookie от https:// / распарсятся?

а вы попробуйте этот
12. SpaceOfMyHead 196 28.07.21 12:15 Сейчас в теме
(9) отмодерировали адрес, который возвращает в значении Cookie JSON, что ломает парсинг в ИР (и в Коннекторе). Создатели платформы подкинули проблем, соединив заголовки с одинаковым именем в строку через ','
11. SpaceOfMyHead 196 28.07.21 11:51 Сейчас в теме
(7) Там свои плюсы, здесь свои. Консоль в сабже – приятный бонус к библиотеке методов.
13. Tahallus 441 28.07.21 19:48 Сейчас в теме
14. SpaceOfMyHead 196 28.07.21 20:02 Сейчас в теме
(13) Не буду я здесь критиковать работу коллег.

В Клиенте собран мой опыт работы в 1С с внешними сервисами. Здесь есть фичи, которых нет в других работах (или они реализованы по другому). И да, Коннектор имеет фичи, которые отсутствуют в Клиенте.
mvxyz; Evg-Lylyk; mihap; +3 Ответить
17. dctvghbdtn 29.07.21 13:56 Сейчас в теме
18. SpaceOfMyHead 196 29.07.21 14:16 Сейчас в теме
(17) Судя по переписке... Вам сервер вернул 200 и в заголовках нет Location (перепроверьте наличие этого заголовка). Значит для вас как для клиента никаких редиректов нет. И это не ваше дело как клиента, куда там ходит и что делает сервер, чтобы выдать вам ответ, ни технически, ни идеологически. Вы "знаете" только то, что вам вернулось в ответе.
21. dctvghbdtn 29.07.21 14:46 Сейчас в теме
(18) Логика ваша понятна. Интересен концепт в принципе обработки таких запросов.
Эта ситуация адекватно отрабатывается браузером, т.е. я увижу и свой post удаленному серверу и увижу редирект (как отрисованная "новая" страница). Т.е. связь (соединение) между клиентом и сервером сохранилась. Но в моем случае получается контекст соединения теряется в принципе.
22. SpaceOfMyHead 196 29.07.21 14:58 Сейчас в теме
(21) Нужны подробности. Адрес обращения, параметры, заголовки, порт, прокси...
19. malikov_pro 1324 29.07.21 14:29 Сейчас в теме
Чем не устроил?
https://github.com/vbondarevsky/Connector

Статья
https://infostart.ru/public/709325/

С телом запроса иногда траблы (прекос по параметрам), в остальном норм.
33. SpaceOfMyHead 196 16.12.21 22:24 Сейчас в теме
(19) Понять разницу можно попробовав оба: Connector и Клиент. Если проникнитесь симпатией к клиенту буду рад пул-реквестам в проекте гитхаба.
20. malikov_pro 1324 29.07.21 14:31 Сейчас в теме
Если интересна тема унификации HTTP, то посмотрите https://github.com/gothinkster/realworld, будет желание реализовать - пишите, выделю время.
32. SpaceOfMyHead 196 16.12.21 22:14 Сейчас в теме
(20) Проект по ссылке - полигон тестирования коммуникации бек <-> фронт. Клиент о другом. Как его встроить в Conduit?
23. user1346935 29.07.21 15:07 Сейчас в теме
24. SpaceOfMyHead 196 03.08.21 11:08 Сейчас в теме
Вышло исправление. Исправил выполнение POST multipart (в ранних версиях не работает совсем)
25. SpaceOfMyHead 196 13.08.21 11:13 Сейчас в теме
Вышло обновление 1.1.0

Добавил кодогенерацию интерактивно настроенного запроса в Консоли.
Появился доступ к дополнительным настройкам выполнения запроса.
26. SpaceOfMyHead 196 12.09.21 10:24 Сейчас в теме
Вышло обновление 1.2.0

Добавил импорт из Postman (формат файла 2.1).

Смотрите какая штука теперь возможна. Вы (или ваш коллега из web) накидали запрос в Postman; экспортировали его... А теперь импортировали его в консоли Клиента и там же сгенерировать код 1С. PROFIT!

Ещё появилась Bearer-авторизация.
30. SpaceOfMyHead 196 16.12.21 16:41 Сейчас в теме
Вышло обновление 1.3.0

Появились:
- импорт команды curl;
- отправка тела типа application/x-www-form-urlencoded.

Теперь имеем мощную связку действий в Консоли:
- импортируем (Postman или curl)
- получаем код 1С
- PROFIT!

Улучшения:
- оптимизирован вывод текстовых данных большого размера;
- добавлены форматы отображения данных тела ответа: JSON, HTML и картинка;
- в разделе "Ответ" добавлена статистика выполнения запроса (время выполнения и размер данных).

Отрефакторил внутренний код для соответствия стандартам 1С.
36. SpaceOfMyHead 196 20.12.21 18:56 Сейчас в теме
(30) Вышло обновление 1.3.1

Исправлено:
- расчёт размера тела ответа
- отображение тела ответа в форматах JSON и HTML
37. SpaceOfMyHead 196 27.02.22 22:19 Сейчас в теме
Вышла версия 1.4.0

Новое

В качестве идентификатора ресурса можно передавать структуру, полученную конструктором ОбъектИдентификатораРесурса(...)
В Консоли добавлен построитель URL

Появилась возможность задавать формат преобразования тела ответа из двоичных данных (в текст и JSON)

Добавлен метод настройки прокси для выполнения запроса и импорт прокси из curl в Консоли

У подсистемы КлиентHTTP появилась картинка

Исправления:
- значение Content-Disposition заголовка поля формы multipart/form-data
- кодогенерация в Консоли не делает перенос строки для единственного метода текучего интерфейса
- при запуске Консоли по умолчанию выключено использование сессии и сжатого ответа
38. teploukhov 10 08.04.22 13:57 Сейчас в теме
Давно пользуюсь коннектором Бондаревского. Посмотрел Вашу библиотеку. Красиво написано, ничего не скажешь. Придется, наверное, внедрять.
39. SpaceOfMyHead 196 15.04.22 15:24 Сейчас в теме
(38) Спасибо. Проект развивается. Есть идеи, которые будут реализовываться в следующих версиях. За процессом реализации можно следить на странице проектов GitHub (сейчас v 1).

Напоминаю, в развитии проекта можно поучаствовать, отправляя pull-request'ы в github репозиторий Клиента.
40. SpaceOfMyHead 196 26.04.22 15:53 Сейчас в теме
Вышла версия 1.5.0

Новое

Появилась возможность задавать формат преобразования тела ответа из двоичных данных в тип XDTO

Консоль позволяет выполнять запрос в контексте клиента и сервера

Документация

Примеры использования

Доска проекта

Исправления:
- использование настройки защищённого соединения из конфигурации запроса
41. SpaceOfMyHead 196 18.05.22 13:00 Сейчас в теме
Вышло исправление 1.5.2

Исправления:
- получение кодировки из заголовка ответа Content-Type
- сохранение Cookie в конфигурацию запроса

P.S. первые правки по обращениям от пользователя библиотеки!
42. SpaceOfMyHead 196 15.06.22 18:16 Сейчас в теме
Вышла версия 1.6.0

Новое

Добавлена возможность выполнять PATCH-запрос

Появилась история выполненных запросов

Изменён дизайн настроек Консоли

Исправления:
- кодирование содержимого полей HTML-формы в теле запроса
- выполнение HEAD-запроса в Консоли
- минорные исправления

Переключаюсь на разработку 2й версии, где упор будет сделан на асинхронность и мобильное приложение. Буду благодарен помощи как словом, так и делом.
it_depDi; +1 Ответить
43. SpaceOfMyHead 196 18.06.22 23:46 Сейчас в теме
Вышла версия 2.0.0

Отключен режим использования синхронных вызовов

Добавлена возможность вызова экспортных процедур и функций для внешнего соединения

Минимальная требуемая версия платформы: 8.3.18


Для версии 1 сделано обновление (1.7.0):
- добавлена возможность вызова экспортных процедур и функций для внешнего соединения
- исправлено отображение в Консоли картинки при сохранении тела ответа в файл
44. SpaceOfMyHead 196 27.06.22 23:59 Сейчас в теме
Вышла версия 2.1.0

Библиотека доступна для использования в приложении на мобильной платформе:
- мобильный клиент (+автономный)
- мобильное приложение

Добавлен интерфейс Консоли для работы на мобильном устройстве
45. SpaceOfMyHead 196 26.07.22 15:45 Сейчас в теме
Вышли версии 2.2.0 и 1.8.0

Добавлена возможность переиспользовать HTTP-соединение в последовательных запросах.

Исправлено:
- преобразование пустого тела ответа как JSON или XML возвращает Неопределено
46. sojuznik 23 30.09.22 13:08 Сейчас в теме
Спасибо! Как раз задача нарисовалась: нужно было с сайтом поработать, а раньше этим не занимался. С помощью вашего механизма все вопросы решил довольно быстро.
47. vovast 10.02.23 17:28 Сейчас в теме
Добавлена возможность переиспользовать HTTP-соединение в последовательных запросах.


А с обратной задачей не сталкивались? Как прибить соединение, созданное ранее через HTTPСоединение?
48. SpaceOfMyHead 196 11.02.23 17:46 Сейчас в теме
(47) Уточню. По умолчанию переиспользования соединения не происходит - для каждого запроса создаётся новый объект HTTPСоединение.

Другой случай. Сконфигурировали с переиспользованием:

КлиентHTTPКлиентСервер.ПереиспользоватьСоединение(ДП);


С какого-то момента переиспользование требуется выключить. Делаем так:

КлиентHTTPКлиентСервер.ПереиспользоватьСоединение(ДП, Ложь);


Если требуется "сменить" объект HTTPСоединение перед очередной серией запросов (этот кейс описан в статье), перед их выполнением должен быть ещё один вызов конфигурирования:

КлиентHTTPКлиентСервер.ПереиспользоватьСоединение(ДП);
49. SpaceOfMyHead 196 17.05.23 01:59 Сейчас в теме
Вышли версии 2.3.0 и 1.9.0

Новое

- Аутентификация AWS4-HMAC-SHA256
- Аутентификация Hawk
- Monaco editor в Консоли v2 для отображения тела ответа и кода 1С (сборка макета от salexdv. Спасибо огромное!)
- Генерация команды curl в Консоли
- Управление заголовком User-Agent

Улучшено

- Загрузка истории выполнения запросов из файла поддерживает обратную совместимость версий Консоли
- Обработка редиректов (для 301 и 302 можно указывать принудительную смену метода на GET для запроса по URI редиректа)
- Парсинг параметров в URI с обработкой фрагмента
- Расширен набор функций-констант в модуле повторного использования
- Конструктор URL в Консоли

Исправлено

- Процессинг параметров запроса (кодирование/декодирование)
- Парсинг заголовка ответа Set-Cookie
- Обработка объекта идентификатора ресурса: получение параметров из АдресРесурса
50. SpaceOfMyHead 196 22.05.23 08:45 Сейчас в теме
(49) Выпустил версии 2.4.0 и 1.10.0

Новое

- Повторные выполнения HTTP-запроса после неуспешного результата с настраиваемым изменением пауз между попытками

Улучшено

- Управление таймаутом в Консоли
- Клиент реагирует на заголовок Retry-After во время редиректов
- Генерация кода 1С
- Генерация команды curl в Консоли
- Импорт заголовков из Postman

Исправлено

- Обновление заголовков Host и Cookie при редиректах
- Корректность адресного получения кодов состояния клиентских ошибок
51. SpaceOfMyHead 196 29.05.23 13:33 Сейчас в теме
(50) Выпустил версии 2.4.1 и 1.10.1

Улучшено

- Контекст выполнения в объекте выполненного запроса содержит схему, хост и адрес ресурса запроса или выполненного последним в цепочке редиректов

Исправлено

- Редиректы по локальным адресам
52. SpaceOfMyHead 196 25.02.24 20:54 Сейчас в теме
Выпустил версии 2.5.0 и 1.11.0

Новое

- Использование указанных файлов сертификатов клиента и УЦ для установки защищённого соединения (библиотека и Клиент)

Улучшено

- Управляемое отображение секретов в кодогенерации и команде curl (Клиент)
- Подготовка и выполнение запроса полностью в целевом контексте (Клиент)

Исправлено

- Инициализация типа тела запроса при старте (Клиент)
- Экранирование кавычек и обработка множественных пробелов при работе с командой curl (Клиент)
- Автоматический переход на представление тела ответа как картинка (Клиент)
Оставьте свое сообщение