HTTP-клиент

11.03.24

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

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

Скачать файлы

Наименование Файл Версия Размер
HTTP-клиент:
.cf 2,51Mb
47
.cf 2.5.0 2,51Mb 47 Скачать
HTTP-клиент (обновление):
.cfu 2,47Mb
2
.cfu 2.5.0 2,47Mb 2 Скачать
HTTP-клиент (расширение):
.cfe 2,50Mb
21
.cfe 2.5.0 2,50Mb 21 Скачать
v1 HTTP-клиент:
.cf 139,05Kb
3
.cf 1.11.0 139,05Kb 3 Скачать
v1 HTTP-клиент (обновление):
.cfu 122,01Kb
6
.cfu 1.11.0 122,01Kb 6 Скачать
v1 HTTP-клиент (расширение):
.cfe 137,54Kb
3
.cfe 1.11.0 137,54Kb 3 Скачать

Подсистема 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 кодогенерация

См. также

Интеграция Альфа Авто 5 / Альфа Авто 6 и AUTOCRM / Инфотек

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

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

36000 руб.

03.08.2020    15745    10    17    

11

Интеграция 1С — Битрикс24. Обмен задачами

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

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

5040 руб.

04.05.2021    17548    6    15    

13

Интеграция с сервисом vetmanager

WEB-интеграция Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Бытовые услуги, сервис Платные (руб)

Внешняя обработка разрабатывалась для загрузки документов из Ветменеджер в 1С: Бухгалтерия 3.0

12000 руб.

02.02.2021    16359    42    49    

23

[Расширение] БОР-Навигатор.Культура

Зарплата Бюджетный учет WEB-интеграция Обмен с ГосИС Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бюджетный учет Платные (руб)

Расширение конфигурации, включающее в себя объекты, необходимые для подготовки и сдачи отчета "Штатная численность" системы "БОР-Навигатор.Культура" в программе "1С:Зарплата и кадры государственного учреждения", редакция 3.1.

8400 руб.

01.02.2019    25741    9    0    

7

Заполнение по ИНН или наименованию реквизитов контрагента по данным сайта ФНС

Обмен с ГосИС WEB-интеграция Платформа 1С v8.3 Управляемые формы 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия государственного учреждения 1С:Документооборот 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Платные (руб)

Обработка является альтернативой механизму, разработанному фирмой 1С и заполняющему реквизиты контрагента по ИНН или наименованию. Не требуется действующей подписки ИТС. Вызывается как внешняя дополнительная обработка, т.е. используется, непосредственно, из карточки контрагента. Заполнение по ИНН или наименованию реквизитов контрагента по данным сайта ФНС (egrul.nalog.ru) для БП 2.0, БП 3.0, БГУ 1.0, БГУ 2.0, УТ 10.3, УТ 11.x, КА 1.1, КА 2.x, УПП 1.x, ERP 2.x, УНФ 1.5, УНФ 1.6, УНФ 3.0, ДО 2.1

2400 руб.

28.04.2016    88579    160    215    

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

Новое

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

Улучшено

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

Исправлено

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

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

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


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

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

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

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

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

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

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

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

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

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

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


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


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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

Новое

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

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

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

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

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

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

Новое

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

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

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

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

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

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

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

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

Новое

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

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

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

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

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

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

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

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


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

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

Добавлен интерфейс Консоли для работы на мобильном устройстве
45. SpaceOfMyHead 188 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 188 11.02.23 17:46 Сейчас в теме
(47) Уточню. По умолчанию переиспользования соединения не происходит - для каждого запроса создаётся новый объект HTTPСоединение.

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

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


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

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


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

КлиентHTTPКлиентСервер.ПереиспользоватьСоединение(ДП);
49. SpaceOfMyHead 188 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 188 22.05.23 08:45 Сейчас в теме
(49) Выпустил версии 2.4.0 и 1.10.0

Новое

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

Улучшено

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

Исправлено

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

Улучшено

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

Исправлено

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

Новое

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

Улучшено

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

Исправлено

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