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

27.12.21

Разработка - Инструментарий разработчика

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

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

В мире python очень популярна библиотека для работы с HTTP запросами - Requests (автор: Kenneth Reitz). Библиотека берет на себя всю рутину работы с HTTP запросами. Буквально в одну строку можно получать данные, отправлять, не заботясь о необходимости конструирования URL, кодирования данных и т.п. В общем библиотека очень мощная и проста в использовании.

Коннектор - это "Requests" для мира 1С.

Возможности

Основные возможности библиотеки:

  • Передача параметров в строку запроса (в URL)
  • Удобная работа с запросами и ответами в формате JSON
  • Отправка данных формы (полей формы), application/x-www-form-urlencoded
  • Отправка данных формы (полей формы и файлов), multipart/form-data
  • Прозрачная поддержка ответов, закодированных GZip
  • Сжатие тела запроса GZip
  • Basic, Digest и AWS4-HMAC-SHA256 аутентификация
  • Автоматическое разрешение редиректов
  • Установка и чтение Cookies
  • Работа в рамках сессии с сохранением состояния (cookies, аутентификация и пр.)
  • Переиспользование HTTPСоединение в рамках сессии
  • Настраиваемые повторные попытки соединения/отправки запроса с экспоненциальной задержкой
  • Работает в т.ч. и на мобильной платформе
  • Доступна версия для 1Script
  • И многое другое

Требования

Платформа 8.3.10 и выше.

Мобильная платформа (проверено только на 8.3.15)

1Script >=1.1.1

Где взять

1С:Предприятие 8

https://github.com/vbondarevsky/Connector

1Script

https://github.com/vbondarevsky/1connector

Использование

1С:Предприятие 8

Скопируйте общий модуль КоннекторHTTP к себе в конфигурацию.

1Script

opm install 1connector

Пример мощи библиотеки

Чем же хороша библиотека? Давай уже покажи пример.

Получим данные JSON с помощью GET-запроса:

Вот так это делается стандартными средствами 1С

ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL(Неопределено, Новый СертификатыУдостоверяющихЦентровОС);
Соединение = Новый HTTPСоединение("api.github.com", 443,,,, 30, ЗащищенноеСоединение);
Запрос = Новый HTTPЗапрос("/events");
Ответ = Соединение.Получить(Запрос);
Поток = Ответ.ПолучитьТелоКакПоток();
Кодировка = "utf-8"; // ну допустим мы знаем что там такая кодировка

Ридер = Новый ЧтениеJSON;
Ридер.ОткрытьПоток(Поток, Кодировка); // Кодировка в заголовке ответа
Результат = ПрочитатьJSON(Ридер);
Ридер.Закрыть();

А вот так с помощью Коннектора

Результат = КоннекторHTTP.GetJson("https://api.github.com/events");

Все! В Результат будет десериализованный из JSON ответ сервера. При этом:

  • Библиотека сама разбила URL на составляющие
  • Установила защищенное соединение
  • Определила кодировку ответа из заголовков
  • Десериализовала JSON

И это достаточно простой пример. Всю мощь библиотеки рассмотрим далее.

 
Передача параметров в строку запроса (в URL)
 
Произвольные HTTP заголовки
 
Работа с JSON
 
Отправка данных формы
 
Отправка файла
 
Отправка файлов и данных формы
 
Отправка произвольных данных
 
Содержимое ответа
 
GZip-кодирование тела запроса
 
GZip-декодирование
 
Таймаут
 
Basic-аутентификация
 
Digest-аутентификация
 
AWS4-HMAC-SHA256-аутентификация
 
Доступ через прокси-сервер
 
Поддерживаемые HTTP методы
 
Редиректы (Перенаправления)
 
Проверка серверного сертификата SSL
 
Клиентские сертификаты
 
Работа с Cookies
 
Работа в рамках сессии
 
Повторные попытки соединения/отправки запроса

ТОП-6 инструментов для разработчика 1С

Подборка лучших инструментов для разработчика 1С включает Toolkit, DCT, OneDebugger, PrintWizard, DataFormWizard и Infostart MCP. Любой инструмент со скидкой 20% при покупке от двух решений.

Вступайте в нашу телеграмм-группу Инфостарт

http post get cookie ssl url multipart/form-data x-www-form-urlencoded gzip редирект digest дайджест аутентификация https hmac aws aws-hmac-sha256 amazon basic

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Разработка Инструментарий разработчика Групповая разработка (Git, хранилище) Разработчик Платные (руб)

Практический курс по работе с AI-агентами для разработчиков 1С уровня middle и senior, а также тимлидов команд: от постановки задач и передачи контекста до создания расширений, интеграций, MCP-инструментов, тестов и проверки готового решения.

50000 руб.

10.09.2026    13997    125    0    

87

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Разработчик Руководитель проекта 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы, интерфейс 8.5. Может выполнять свертку одновременно в несколько потоков, а также без непосредственного участия пользователя. Решение в Реестре отечественного ПО.

24900 руб.

20.08.2024    83455    432    171    

364

Инструментарий разработчика Роли и права Запросы СКД Разработчик Руководитель проекта 1С:Предприятие 8 Платные (руб)

Инструменты для разработчиков 1С 8.3 и 8.5: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

16500 руб.

02.09.2020    286087    1608    423    

1220

Инструментарий разработчика Разработка Администрирование веб-серверов Системный администратор Разработчик Аналитик Руководитель проекта 1С 8.3 Платные (руб)

Analyzer 1C сводит выгрузку 1С — основную конфигурацию и все расширения — в единый граф знаний. Любой запрос по связям за доли секунды, с пометками «Доб.» / «Заимств.» / «Переопределено». Новое в 2.0 — обновление поставки: сравнение и объединение версий деревом «как в Конфигураторе» с выгрузкой плана решений; поиск конфликтов из-за перехватов расширений и висячих ссылок; загрузка из бинарных .cf/.cfe; циклические зависимости. Плюс анализ влияния, запросы BSL, роли и RLS, граф вызовов. Минута на развёртывание через Docker без необходимости подключения к Интернет. Любая 1С:Предприятие 8.3+.

14000 руб.

17.04.2026    17009    63    62    

74

Пакетная печать Печатные формы Инструментарий разработчика Разработчик 1С:Предприятие 8 Платные (руб)

Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести порядок в многообразии корпоративных печатных форм. Обновление версии от 21.04.26

22570 руб.

06.10.2023    44334    123    54    

135

Инструментарий разработчика Нейросети Платные (руб)

Первые попытки разработки на 1С с использованием больших языковых моделей (LLM) могут разочаровать. LLMки сильно галлюцинируют, потому что не знают устройства конфигураций 1С, не знают нюансов синтаксиса. Но если дать им подсказки с помощью MCP, то результат получается кардинально лучше. Далее в публикации: MCP для поиска по метаданным 1С, справке синтакс-помощника и проверки синтаксиса.

15250 руб.

25.08.2025    77214    147    41    

154

Разработка Инструментарий разработчика Разработчик Руководитель проекта 1С 8.3 Платные (руб)

Pilot 1C превращает задачу, поставленную обычными словами, в техническое задание, код на встроенном языке и сценарии проверки. Прежде чем что-то предложить, он сверяется с устройством вашей конфигурации через граф Analyzer 1C: существует ли объект, из чего он состоит, кто его вызывает, какие роли дают права. Чего найти не удалось – спрашивает, а не выдумывает. Готовый код проходит более полутора сотен проверок по справочнику языка и стандартам разработки, который приезжает вместе с продуктом. Модель – ваша: любой сервер, совместимый с программным интерфейсом OpenAI, в том числе локальный. Правки в конфигурацию Pilot не вносит – их применяет разработчик.

18300 руб.

11.09.2026    3845    5    0    

10

Инструменты администратора БД Инструментарий разработчика Роли и права Разработчик 1С:Предприятие 8 1C:Бухгалтерия Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

17000 руб.

10.11.2023    28825    104    46    

107
Вознаграждение за ответ
Показать полностью
Отзывы
46. bonv 1625 18.02.19 19:56 Сейчас в теме +12.35 $m
UPDATE: Доступна версия для 1Script
opm install 1connector
barnik; crosby; AlisultanovZakir; _Farsh_; dejurik; sstas007; ef42; antonio_i; Arsvacare; BoryaMbi; lopatrik; SIrina9; blindcat2006; raevsky@e1.ru; simvol@s; iulyus; maksa2005; user859339; abasovit; untru; tulakin_s; mickey.1cx; Perfolenta; oxef; kote; mvxyz; Evg-Lylyk; nixel; Danil.Potapov; ardarik; ardn; Aleskey_K; ktb; EGOLEGE; Merc; GreenDragon; +36 – Ответить
Остальные комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. user1131250 31.01.19 08:02 Сейчас в теме
Плюсанул на звездочке. Ну, круто, чувак, круто, поздравляю! :)
SergeyTerentyev; skalistratov; sksoft007; mc2; ef42; _OLEG; kaliuzhnyi; Nefilimus; +8 – Ответить
2. Labotamy 31.01.19 08:11 Сейчас в теме
(1)не автора надо поздравлять, а слобщество. Поздравляю всех 1с ников с появлением request!
user2028303; kaliuzhnyi; Nefilimus; RustIG; +4 – Ответить
88. for_sale 901 26.07.19 22:45 Сейчас в теме
(2)
Жесть. Зашёл, думаю - что за сыр-бор. А тут все друг друга поздравляют с тем, что за 500 рублей продаётся штука из 10 строк?))) Это ж как одинэсники с интернетом работать не умеют, чтобы так радоваться))
request, кстати, бесплатный))
Vasas2007; Nikola_N; Nefilimus; informa1555; sks; Tapochki-tmn; Pawlick; YARA; +8 – Ответить
89. JohnyDeath 302 26.07.19 23:20 Сейчас в теме
(88) кстати и это всё есть на гитхабе
fedor40; dimaster; Nefilimus; +3 – Ответить
92. for_sale 901 29.07.19 16:18 Сейчас в теме
(89)
А ссылку можно? В статье только за мани, поиск в гугле и гитхабе ничего не дал.
93. JohnyDeath 302 29.07.19 19:44 Сейчас в теме
(92) не знаю как вы искали, но у меня гитхаб поиском по "коннектор" выдает нужный репо в первой же строке
YA_Vladimir; user2028303; serge_focus; +3 –1 Ответить
94. for_sale 901 29.07.19 19:45 Сейчас в теме
(93)
коннектор

Искал КоннекторHTTP. Спасибо, по коннектору нашёл
90. bonv 1625 26.07.19 23:52 Сейчас в теме
(88)
А тут все друг друга поздравляют с тем, что за 500 рублей продаётся штука

А вам я это покоя не дает? Если не способны заработать 500 рублей (вообще-то 5 стартмани), то я могу вам подарить

штука из 10 строк?

Это вы про свою разработку видимо?
https://infostart.ru/public/1081151/
G_103640205454598501167; SmArtist; gucci76; ДимокШ; SAGerasimov; user693240_abramovskaya; pbahushevichG; mc2; bestship; SanchoD; lDenisZl; dimaster; AlexK_2012; Brook; jONES1979; WKBAPKA; serge_focus; TipsyKID; chng; kote; klaus38; dyuha; bugagashenka; adhocprog; genayo; 7OH; +26 –3 Ответить
91. пользователь 27.07.19 01:03
Сообщение было скрыто модератором.
...
3. Labotamy 31.01.19 08:12 Сейчас в теме
Требую включения в состав БСП))
user612295_death4321; cheburashka; SmArtist; YA_Vladimir; NicolasCage; user2028303; pbahushevichG; mc2; bestship; CyclesOfID; user1463853; dimaster; kaliuzhnyi; user1302843; chemezov; WKBAPKA; Viktor_Ermakov; tulakin_s; ivan_luzinov; SagittariusA; user811769; creatermc; pt_olga; mysm; amon_ra; IP0808; Kosstikk; DrAku1a; +28 –1 Ответить
6. zeegin 226 31.01.19 09:25 Сейчас в теме
(3) БСП поставляется по CC-BY, а тут Apache. Разве можно включить?

https://softwareengineering.stackexchange.com/questions/170185/is-creative-commons-license-compatible-with-apache-license

Вот ребята пишут что нельзя.
18. Labotamy 31.01.19 16:37 Сейчас в теме
(6)Тогда точно такой же, только больше и другой =))
20. bonv 1625 31.01.19 16:57 Сейчас в теме
(6) всегда можно договориться )
21. zeegin 226 31.01.19 20:43 Сейчас в теме
(20) Я бы с удовольствием всю подсистему получения файлов из интернета заменил на это, за исключением настроек прокси: их всегда брать из настроек БСП и не предлагать переопределять.
user612295_death4321; mc2; +2 – Ответить
4. krollzlat 31.01.19 09:14 Сейчас в теме
Отлично ,жалко не хватает СМ.Когда рекод работаешь с http забывается...А тут и шпоргалка и удобство.
12. ixijixi 2178 31.01.19 12:11 Сейчас в теме
(4) Народ, переведите кто-нибудь? Хотелось бы, так сказать, в общих чертах понять, что интурист говорит.
bocharovki; AlexK_2012; WKBAPKA; user774630; Гриффин; +5 – Ответить
51. leemuar 63 19.02.19 16:59 Сейчас в теме
(12) "Отличная разработка! Жалко стартмани не хватает, чтобы скачать. Когда редко работаешь с http - забывается. А тут и документация отличная, и сама библиотека удобная"
Klinofong; user612295_death4321; CratosX; Zloten; sstas007; pbahushevichG; ogroup; bestship; bocharovki; BaphoBush; Mnemonik; igor_k39; AlexK_2012; triera2000; LeXXeR; asisdes; so-quest; vvp117; shima; Daynestro07; user1147832; reset2; SanchoD; Fartovaya; user774630; Гриффин; Nefilimus; Aleskey_K; Kuzja_R; pbabincev; EasyWay; ixijixi; +32 – Ответить
5. toypaul 64 31.01.19 09:20 Сейчас в теме
7. leemuar 63 31.01.19 10:11 Сейчас в теме
Отличная библиотека, спасибо!
А имеет большой смысл привязываться к 8.3.10? Да, работа с потоками эффективна с т.зр. расходования памяти, но если убрать потоки можно расширить количество конфигураций, на которых библиотеку можно применять.
8. json 3438 31.01.19 10:32 Сейчас в теме
(7) присоединяюсь к вопросу.
Можно ли будет использовать для более старых конфигураций?
УПП, например очень часто встречается: версия платформы 8.3.10 и выше, но режим совместимости 8.2.13
16. bonv 1625 31.01.19 13:56 Сейчас в теме
(7)(8) Ну дело не только в потоках. В принципе портировать на 8.2 можно
45. leemuar 63 18.02.19 16:21 Сейчас в теме
(16) когда ждать порт? Или куда приcылать pull request? Или лучше сделать свой форк?
47. bonv 1625 19.02.19 11:49 Сейчас в теме
(45) Лучше свой форк, т.к. реализации будут не совместимы из-за функций работы со строками
48. leemuar 63 19.02.19 11:54 Сейчас в теме
(47) в чем именно будет несовместимость? Быстрый анализ кода не выявил каких-то сложностей с заменой встроенных функций работы со строками на самописные. Что я проглядел?
49. bonv 1625 19.02.19 11:59 Сейчас в теме
(48) СтрНайти и Найти
То что сейчас работает Найти, это не значит, что она будет работать в следующей версии платформы
123. legrey 67 22.01.20 14:01 Сейчас в теме
(45) Получилось портировать для релизов ниже 8.3.9 ?
124. leemuar 63 22.01.20 16:21 Сейчас в теме
(123) https://github.com/leemuar/Connector
Не все возможности оригинала поддерживаются. Например, сжатие не работает пока
61. nomadon 369 02.05.19 09:21 Сейчас в теме
(7) о каких именно потоках тут речь?
62. leemuar 63 02.05.19 17:13 Сейчас в теме
(61) о новых объектах в платформе 8.3.9+ таких как ПотокВПамяти, ФайловыйПоток и т.п. Подробнее сожно почитать тут: https://wonderland.v8.1c.ru/blog/novye-instrumenty-dlya-raboty-s-dvoichnymi-dannymi-obespechivayut-kak-posledovatelnyy-dostup-k-danny/
9. tsukanov 31.01.19 10:38 Сейчас в теме
Годнота пошла в топе. Неужели темные времена на инфостарте закончились )
Gang031; Orlando Skibraves; user764477; sigmov; TreeDogNight; DrAku1a; Alien_job; top_1c; zeegin; Labotamy; CyberCerber; SerVer1C; Soloist; ixijixi; +14 – Ответить
10. kuntashov 527 31.01.19 10:43 Сейчас в теме
Очень круто (и почему раньше никто не реализовал?!), даешь порт для OScript!
creatermc; Labotamy; +2 – Ответить
11. comol 31.01.19 11:34 Сейчас в теме
Однозначный плюс - спасибо
13. spy-83 199 31.01.19 12:51 Сейчас в теме
14. efin 31.01.19 13:45 Сейчас в теме
Спасибо!
Очень вовремя, а то писал какие-то свои реализации частных случаев.

Подскажите, может есть на Python библиотека для "другой стороны"? Я, в основном, на 1С делаю http-сервисы, так же была идея как-то унифицировать обработку входящих запросов, возврат значений и ошибок, webhook'и, подписки.
kote; MarkoSokolov; +2 –1 Ответить
15. bonv 1625 31.01.19 13:53 Сейчас в теме
(14)
Подскажите, может есть на Python библиотека для "другой стороны"?

Их там много. В самом python более богатые средства работы с HTTP, чем в 1С.

Самый простой Bottle

https://aiohttp.readthedocs.io/
https://www.tornadoweb.org/
http://flask.pocoo.org/
https://bottlepy.org
https://www.djangoproject.com/
kote; eeeio; mysm; IgorArhangel; efin; JohnyDeath; Il; +7 – Ответить
17. MCV 31.01.19 14:10 Сейчас в теме
Однозначный плюс!
19. Labotamy 31.01.19 16:38 Сейчас в теме
Упс кнопкой ошибся..
22. JohnyDeath 302 01.02.19 08:51 Сейчас в теме
Крутой наборчик, спасибо!

Вопрос: а нет ли библиотеки, которая разбирает фильтры OData в какой-нибудь удобный вид?
Надо делать хттп-сервис в 1с, который бы поддерживал базовые фильтры в стиле OData. Наверняка это уже где-то сделано.
TreeDogNight; +1 – Ответить
23. AlexeyDmuhin 01.02.19 09:35 Сейчас в теме
Отличная работа! Спасибо!
24. rwn_driver 9 01.02.19 15:42 Сейчас в теме
Сильно! Спасибо!!!
25. Ktuhh 02.02.19 12:51 Сейчас в теме
Отличная штука. Ещё бы бьютифул суп сделать для 1с
26. Ktuhh 03.02.19 13:11 Сейчас в теме
При переборе куков нужно добавить проверку на то, что есть не только ключ, но значение, а то крашится.
27. bonv 1625 03.02.19 13:25 Сейчас в теме
(26) пример запроса можно?
28. Ktuhh 03.02.19 16:46 Сейчас в теме
29. bonv 1625 03.02.19 18:00 Сейчас в теме
30. MCV 04.02.19 16:11 Сейчас в теме
Сам python нужен для работы библиотеки?
31. bonv 1625 04.02.19 16:42 Сейчас в теме
32. 7OH 90 07.02.19 14:17 Сейчас в теме
{ОбщийМодуль.КоннекторHTTP.Модуль(1502)}: Ошибка при вызове метода контекста (ПрочитатьJSON)
Объект = ПрочитатьJSON(
по причине:
Непредвиденный символ при чтении JSON

А вот , что выдаёт в ответе PostMan

{
    "Успех": true,
    "ФИО": {
        "Фамилия": "Пупкин",
        "Имя": "Африкан",
        "Отчество": "Свиридович"
    },
    "ДР": "2013-03-18T09:53:27",
    "Дети": [
        "Вася",
        "Лена"
    ]
}
Показать


А вот код, собирающий ответ
Кодировка = "UTF-8";

ЗаписьJSON = Новый ЗаписьJSON();

ПараметрыЗаписи = Новый ПараметрыЗаписиJSON(, Символы.Таб);

ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписи);

ЗаписатьJSON(ЗаписьJSON, Данные);
СтрокаJSON = ЗаписьJSON.Закрыть();

Ответ = Новый HTTPСервисОтвет(200);

Ответ.УстановитьТелоИзСтроки(СтрокаJSON, Кодировка, ИспользованиеByteOrderMark.НеИспользовать);

Возврат Ответ;
Показать


Что не так ?
33. bonv 1625 07.02.19 15:07 Сейчас в теме
(32) Нужно попробовать сделать так:
Ответ = КоннекторHTTP.Get("......");
Сообщить(Ответ.КодСостояния);
Сообщить(КоннекторHTTP.КакТекст(Ответ));


Скорей всего по какой-то причин ответ пришел не в формате JSON
34. 7OH 90 07.02.19 15:29 Сейчас в теме
(33)
ообщить(Ответ.КодСостояния); Сообщить(КоннекторHTTP.КакТекст(Ответ));

Спасибо.
Полдела есть "<title>IIS 10.0 Detailed Error - 401.5 - Unauthorized</title> "

Вот код

Аутентификация = Новый Структура("Пользователь, Пароль", "1cuser", "1cparol");

Ответ = КоннекторHTTP.Get("http://111.222.333.444/base/hs/service/Test", Новый Структура("Аутентификация", Аутентификация));

Сообщить(Ответ.КодСостояния);


Вызов же вроде верный.
35. bonv 1625 07.02.19 15:32 Сейчас в теме
(34) В публикации сервиса в IIS используется анонимная аутентификация?
36. 7OH 90 07.02.19 15:35 Сейчас в теме
(33)Ещё раз спасибо. Одной запятой перед параметрами не хватило.
Не рассмотрел в примере из шапки 2 запятые в конце.
41. MCV 10.02.19 09:34 Сейчас в теме
(33) На том же попался, что при отправке POST ошибка на непредвиденный символ
Только у меня GET возвращает корректные данные.

в описании API
....
Client : Работа с клиентами Show/Hide List Operations Expand Operations
GET /client Получение списка клиентов
POST /client Создание клиента
GET /client/{id} Получение клиент по ID
PUT /client/{id} Обновление клиента по ID


Но ошибка явно кроется в том, что отвечает сервер об ошибке.
В отладчике:
Ответ.КодСостояния = 500
Ответ.Тело= 43 44 62 43 6F 6D ... ДвоичныеДанные
В теле ответа есть двоичные данные. Очевидно там сервер пишет о своей проблеме в виде строки.


Я бы поправил

Объект = ПрочитатьJSON(...)


через попытку.

Если вышло исключение , то вернуть тело как строку (затолкнув ее в структуру для совместимости типов возвращаемых значений этой функции).


Проще говоря: не всегда на /POST приходит ответ в том, в чем отправили))
42. bonv 1625 10.02.19 15:01 Сейчас в теме
(41) Текст ошибки можно посмотреть если вызвать КакТекст.

Вообще, безопасный алгоритм такой:
Ответ = КоннецкторHTTP.Post();
Если Ответ.КодСостояния = 200 Тогда // Зависит от сервиса, где-то и на ошибки возвращать будут JSON
    Результат = КоннекторHTTP.КакJson(Ответ);
Иначе
    ВызватьИсключение(КоннекторHTTP.КакТекст(Ответ));
КонецЕсли;
androgin; +1 – Ответить
43. MCV 10.02.19 20:41 Сейчас в теме
(42)
Текст ошибки можно посмотреть если вызвать КакТекст.

Именно так.

Я не совсем понятно описал суть:

Результат =КоннекторHTTP.PostJson("http://demo1.aut............./call",Содержимое,Новый Структура("Аутентификация", ПараметрыЗапроса));
Если Результат.Получить("success") Тогда
.....
....

Иначе
Для Каждого ЗаписьОтвета Из Результат.Получить("errors") Цикл
.......
.......


PostJson не всегда возвращает ожидаемый результат.
Бывают ситуации, когда сервер вернет не 200, а кодСостояния =500 (да много их там), то тело будет содержать в себе не Json, а текст (или xml).

Ошибка возникает именно в строке 1502 , как писали в (32)
44. MCV 10.02.19 20:49 Сейчас в теме
(42) Я не совсем понятно выразился.

Использую

Результат =КоннекторHTTP.PostJson("http://demo1.auXXXXXXX",Содержимое,Новый Структура("Аутентификация", ПараметрыЗапроса));
	Если Результат.Получить("success") Тогда 
	...	
	Иначе 
		Для Каждого ЗаписьОтвета Из Результат.Получить("errors") Цикл
...


Не всегда ответ содержит именно Json. И ошибка в модуле коннектора стр. 1503 как писали в (32).
Я в (41) предложил)
40. MCV 09.02.19 13:55 Сейчас в теме
37. leobrn 712 08.02.19 12:38 Сейчас в теме
подскажите, как задать параметр ассоциативный массив? (sort[updated_at]=3)

http://direct.ru/lead/25/list?sort[updated_at]=3

Пробовал так:

П
араметрыЗапроса = Новый Структура;

	СтруктураСортировка = Новый Соответствие;
	СтруктураСортировка .Вставить("updated_at ",3);
	
	ПараметрыЗапроса.Вставить("sort", СтруктураСортировка );
38. bonv 1625 08.02.19 13:03 Сейчас в теме
(37)

Поправил ошибку.
Должно работать так:

ПараметрыЗапроса = Новый Соответствие;
ПараметрыЗапроса.Вставить("sort[updated_at]", "3");
	
Ответ = КоннекторHTTP.Get("http://direct.ru/lead/25/list", ПараметрыЗапроса);
mc2; leobrn; +2 – Ответить
39. leobrn 712 08.02.19 13:16 Сейчас в теме
(38)
sort[updated_at]


взлетело, спасибо
46. bonv 1625 18.02.19 19:56 Сейчас в теме +12.35 $m
UPDATE: Доступна версия для 1Script
opm install 1connector
barnik; crosby; AlisultanovZakir; _Farsh_; dejurik; sstas007; ef42; antonio_i; Arsvacare; BoryaMbi; lopatrik; SIrina9; blindcat2006; raevsky@e1.ru; simvol@s; iulyus; maksa2005; user859339; abasovit; untru; tulakin_s; mickey.1cx; Perfolenta; oxef; kote; mvxyz; Evg-Lylyk; nixel; Danil.Potapov; ardarik; ardn; Aleskey_K; ktb; EGOLEGE; Merc; GreenDragon; +36 – Ответить
50. GreenDragon 19.02.19 16:31 Сейчас в теме
(46) Даже библиотеку запилил? Просто огонь! Моё увОжение...
52. leemuar 63 19.02.19 18:17 Сейчас в теме
Форк для режима совместимости 8.3.5: https://github.com/leemuar/Connector
53. Forest83 66 28.03.19 11:09 Сейчас в теме
Добрый день!

1. Какой логин и пароль для обработки тестирования?

2. Как правильно вызвать метод POST c телом из JSON?

При вызове метода PostJson
Выдает ошибку: {ОбщийМодуль.КоннекторHTTP.Модуль(1531)}: Ошибка при вызове метода контекста (ПрочитатьJSON): Недопустимое состояние потока записи JSON

Хотелось бы описание ошибок и примеры по основным методам с данными с которыми будет формироваться запрос.
54. bonv 1625 28.03.19 11:30 Сейчас в теме
(53)
1. Какой логин и пароль для обработки тестирования?

Обновил файл, теперь тест с доступом к сайту ИТС необязательный. Вообще, там нужен логин, пароль к веб-ИТС.

2. Как правильно вызвать метод POST c телом из JSON?

А пример можно? В параметр Json передается текст?
55. Forest83 66 28.03.19 15:40 Сейчас в теме
Передаю структуру.
Прикрепленные файлы:
56. bonv 1625 28.03.19 17:42 Сейчас в теме
(55) Можно увидеть полный код вызова?
57. bonv 1625 28.03.19 23:37 Сейчас в теме
(55) В ответе пришел не JSON

Безопасный вариант
Ответ = КоннекторHTTP.Post(....);
Если Ответ.КодСостояния = 200 Тогда // Зависит от сервиса, где-то и на ошибки возвращать будут JSON
    Результат = КоннекторHTTP.КакJson(Ответ);
Иначе
    ВызватьИсключение(КоннекторHTTP.КакТекст(Ответ));
КонецЕсли;
58. Forest83 66 29.03.19 10:29 Сейчас в теме
Да возвращается не JSON, не понял из описания метода. POST отрабатывает корректно.

И еще интересно, что при POST-запросе с JSON, если приходит редирект 301, то автоматически меняет метод на GET. И после этого ожидаемо падает с 405 кодом...
59. bonv 1625 29.03.19 11:10 Сейчас в теме
(58)
И еще интересно, что при POST-запросе с JSON, если приходит редирект 301, то автоматически меняет метод на GET. И после этого ожидаемо падает с 405 кодом...

RFC 2068 запрещает автоматический редирект для POST если получен код 301.
https://rfc2.ru/2068.rfc/53#p10.3.2

В GET преобразуют большинство браузеров. Думаю стоит привести поведение к RFC - возвращать просто 301 в этом случае
60. Forest83 66 29.03.19 12:08 Сейчас в теме
Согласен.

Либо как рекомендуют по ссылке выше: Если код состояния 301 был получен в ответ на запрос, отличный от GET или HEAD, агент пользователя НЕ ДОЛЖЕН автоматически переназначать запрос, пока нет подтверждения пользователя, так как иначе условия запроса изменятся.
63. user774630 07.05.19 18:05 Сейчас в теме
Добрый день. NTLM аутентификация не поддерживается?
64. bonv 1625 08.05.19 07:01 Сейчас в теме
(63) сейчас не поддерживается
65. bonv 1625 13.05.19 09:18 Сейчас в теме
(63) Теперь поддерживается
kmish; pbahushevich; creatermc; user774630; +4 – Ответить
200. kovyazin_open 08.07.21 10:06 Сейчас в теме
(65) Нашел :) спасибо
// Создает объект для хранения параметров сессии.
//
// Возвращаемое значение:
// Структура - параметры сессии:
// *Заголовки - Соответствие - HTTP заголовки запроса.
// *Аутентификация - Структура - параметры аутентификации запроса.
// *ИспользоватьАутентификациюОС - Булево - включает использование аутентификации NTLM или Negotiate.
// Значение по умолчанию: Ложь.
// *Тип - Строка - тип аутентификации. Для Basic Тип можно не указывать.
Функция СоздатьСессию() Экспорт
223. kmish 04.04.22 19:31 Сейчас в теме
(65) Прошу прощения, нигде не вижу в документации как ntlm устанавливается. Где можно посмотреть?
232. bonv 1625 30.05.22 16:20 Сейчас в теме
(223) https://github.com/vbondarevsky/Connector/blob/af9c38c28d0f3f50902d2e7a1593­c26f130ea671/src/ru/CommonModules/%D0%9A%D0%BE%D0%BD%D0%BD%D­0%B5%D0%BA%D1%82%D0%BE%D1%80HTTP/Ext/Module.bsl#L462

Аутентификация = Новый Струтура("ИспользоватьАутентификациюОС", Истина);
КоннекторHTTP.Get(URL, Неопределено, Новые Структура("Аутентификация", Аутентификация));
66. TelsDevelopUser 13.05.19 11:21 Сейчас в теме
Не совсем понятно, каким образом можно передать
1) в теле запроса сразу массив
2) имена свойств с "-"

Например:
[
	{
		"ship-id": "1", ...}
	{
		"ship-id": "1", ...}
]


Подскажите, пожалуйста, какого вида должны быть данные, передаваемые в доп. параметры структурой с именем "Данные"?
67. JohnyDeath 302 13.05.19 12:57 Сейчас в теме
(66) вангую, что надо вместо структуры использовать Соответствие
68. bonv 1625 13.05.19 13:03 Сейчас в теме
(66)
Можно так
Json = Новый Массив;
ВложенныйОбъект = Новый Соответствие;
ВложенныйОбъект.Вставить("ship-id", "1");
Json.Добавить(ВложенныйОбъект);
			
Результат = КоннекторHTTP.PostJson("https://httpbin.org/post", Json);
TelsDevelopUser; +1 – Ответить
75. TelsDevelopUser 21.05.19 11:00 Сейчас в теме
(68) Спасибо! И еще вопрос - можно ли как-нибудь и как получить статус HTTP-запроса (200, например) и другие корневые свойства в результате?
76. bonv 1625 21.05.19 11:05 Сейчас в теме
(75) Все методы без суффикса Json возвращают структуру со свойствами ответа
Т.е. вместо
Результат = КоннекторHTTP.PostJson("https://httpbin.org/post", Json);

нужно использовать
Ответ = КоннекторHTTP.Post("https://httpbin.org/post", Json);
Ответ.КодСостояния - то что нужно
Результат = КоннекторHTTP.КакJson(Ответ);


Вообще, в статье все это есть)
deathwalker; TelsDevelopUser; +2 – Ответить
69. genayo 14.05.19 16:02 Сейчас в теме
Поддержка OAuth - авторизации не планируется?
70. bonv 1625 14.05.19 19:28 Сейчас в теме
(69) Ну с OAuth не все так просто.
Для каких сервисов нужно?
71. genayo 14.05.19 20:07 Сейчас в теме
(70) Да возникла задача интеграции с API с авторизацией через Bearer Token в http header.
72. bonv 1625 15.05.19 14:56 Сейчас в теме
(71) Если токен есть, то достаточно заполнить заголовок
Заголовки = Новый Соответствие;
Заголовки.Вставить("Authorization", "Bearer МойСуперСекретныйТокен");
Результат = КоннекторHTTP.GetJson("http://httpbin.org/headers",, Новый Структура("Заголовки", Заголовки));
73. lefthander 15.05.19 16:12 Сейчас в теме
В разделе содержимое это правильно?

//Цитата
Чтение ответа как JSON

Получить данные из ответа в виде десериализованного JSON можно с помощью метода КакJson.

Результат = КоннекторHTTP.КакJson(КоннекторHTTP.Post(("http://httpbin.org/get")));
//Конец цитаты
74. bonv 1625 15.05.19 16:18 Сейчас в теме
(73) Спасибо, поправил
77. SlaSla 16.06.19 08:31 Сейчас в теме
Каким образом отправить чисто json строку через КоннекторHTTP.Post без предварительного преобразования в Соответствие?
78. SlaSla 16.06.19 12:51 Сейчас в теме
Какова должна быть структура-соответствие-масссив отправляемого через КоннекторHTTP.Post

{"F":[

{"S":{"code":1,"price":5,"name":"Конфета"}},
{"S":{"code":2,"price":15,"name":"Печенье", "qty":0.5}},
{"D":{ "prc":5, "all":1}},

]}
79. bonv 1625 16.06.19 13:52 Сейчас в теме
(78)
	
F = Новый Структура;
Объекты = Новый Массив;
Объекты.Добавить(Новый Структура("S", Новый Структура("code,price,name", 1, 5, "Конфета")));
Объекты.Добавить(Новый Структура("S", Новый Структура("code,price,name,qty", 2, 15, "Печенье", 0.5)));
Объекты.Добавить(Новый Структура("D", Новый Структура("prc,all", 5, 1)));
F.Вставить("F", Объекты);

Ответ = КоннекторHTTP.PostJson("http://httpbin.org/post", F);
Показать


Как-то так
user774630; +1 – Ответить
80. SlaSla 16.06.19 14:14 Сейчас в теме
(79)Спасибо! Всё получилось!
81. Goleff74 219 01.07.19 19:48 Сейчас в теме
Добрый день.
Нет ли в планах или загашниках добавить в библиотеку методов работы с нестандартными для 1С Soap сервисами, схемы которых 1С прочитать не в состоянии и приходится все это отсылать POST'ом, формируя тело самостоятельно?
82. bonv 1625 02.07.19 22:38 Сейчас в теме
(81) Планы есть, но пока нет времени
83. user1166203 04.07.19 14:15 Сейчас в теме
А как в POST запрос передать тело в свободном виде? Не JSON.
84. bonv 1625 04.07.19 15:52 Сейчас в теме
(83) какой формат этого тела? Что за данные?
85. user1166203 04.07.19 17:38 Сейчас в теме
86. bonv 1625 05.07.19 02:11 Сейчас в теме
(85) Обновил версию. Отправка выполняется таким образом
XML = 
"<?xml version=""1.0"" encoding=""utf-8""?>
|<soap:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/"">
|  <soap:Body>
|    <GetCursOnDate xmlns=""http://web.cbr.ru/"">
|      <On_date>2019-07-05</On_date>
|    </GetCursOnDate>
|  </soap:Body>
|</soap:Envelope>";
	
Заголовки = Новый Соответствие;
Заголовки.Вставить("Content-Type", "text/xml; charset=utf-8");
Заголовки.Вставить("SOAPAction", "http://web.cbr.ru/GetCursOnDate");
Ответ = КоннекторHTTP.Post(
	"https://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx",
	XML, 
	Новый Структура("Заголовки", Заголовки));
Показать
95. chipazawra 29.08.19 17:48 Сейчас в теме
(86) Приветствую!
Хотел бы уточнить.
1) Собираешься ли ты реализовать поддержку параметровURL ? пример "/storage/{Storage}/{ID}"
2) Поддержку соединения, не каждый раз его инициализировать а что-то подобное .СоздатьСессию().
96. bonv 1625 30.08.19 16:39 Сейчас в теме
(95)

1) Собираешься ли ты реализовать поддержку параметровURL ? пример "/storage/{Storage}/{ID}"

Это зачем? Можно пример


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

Да, в рамках сессии соединение будет сохраняться, но пока еще не сделал
103. bonv 1625 14.10.19 09:26 Сейчас в теме
(95)
2) Поддержку соединения, не каждый раз его инициализировать а что-то подобное .СоздатьСессию().


Теперь в рамках сессии HTTPСоединение переиспользуется
JohnyDeath; +1 – Ответить
87. пользователь 23.07.19 12:29
Сообщение было скрыто модератором.
...
97. chipazawra 30.08.19 17:36 Сейчас в теме
Есть URL такого вида https://.....//storage/{Storage}/{ID}
Storage и ID это параметры.
Если брать HTTP сервис 1С то в шаблоне они указываются в фигурных скобках.
И тогда когда мы получаем запрос на наш HTTP-сервис:

HTTPСервисЗапрос (HTTPServiceRequest)
Свойства:
HTTPМетод (HTTPMethod)
БазовыйURL (BaseURL)
Заголовки (Headers)
ОтносительныйURL (RelativeURL)
ПараметрыURL (URLParameters)
ПараметрыЗапроса (QueryOptions)
Методы:
ПолучитьТелоКакДвоичныеДанные (GetBodyAsBinaryData)
ПолучитьТелоКакПоток (GetBodyAsStream)
ПолучитьТелоКакСтроку (GetBodyAsString)
Описание:
Описывает запрос к HTTP-сервису.
Доступность:
Сервер, толстый клиент.

{Storage} и {ID} уже будут в структуре ПараметрыURL в удобном виде.

Когда мы обращаемся из 1С на HTTP-Сервисы такого рода с помощью твоего коннектора то приходится делать так:

ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Аутентификация", Аутентификация);
НТТPОтвет = КоннекторHTTP.Get(СтрШаблон("%1/%2%3", URL, Storage, ID),, ДополнительныеПараметры);

Что ИМХО показалось костылём.

Сначала я надеялся на такую реализацию.

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

ПараметрыURL = Новый Структура;
ПараметрыURL.Вставить("Storage", "main");
ПараметрыURL.Вставить("ID", "1488");

НТТPОтвет = КоннекторHTTP.Get(URL,, ПараметрыURL, ДополнительныеПараметры);

А так коннектор очень удобный. Пользуюсь, жду соединение в сессии.
125. leemuar 63 24.01.20 17:55 Сейчас в теме
(97) добавьте функцию-обертку, принимающую параметры структурой, формирующую итоговую строку и вызывающую оригинальную функцию библиотеки. Присылайте пулреквест на гитхабе
98. vlad1976 03.09.19 23:55 Сейчас в теме
как тут
данные в КоннекторHTTP.ВызватьМетодВСеансе Json передать?


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

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

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


Куда ложить тело а куда параметры?
105. bonv 1625 17.10.19 14:56 Сейчас в теме
(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 строку.

Как мне используя ваш коннектор выполнить этот запрос?
107. bonv 1625 17.10.19 17:38 Сейчас в теме
(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", Неопределено, ДополнительныеПараметры);
Показать
mc2; KUAvanesov; +2 – Ответить
108. KUAvanesov 18.10.19 11:00 Сейчас в теме
(107)
Параметры


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

clientToken: "token"

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


Все же есть в описание. См. Произвольные HTTP заголовки
110. aicom 34 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 – Ответить
111. bonv 1625 18.11.19 01:23 Сейчас в теме
118. пользователь 02.12.19 14:25
Сообщение было скрыто модератором.
...
112. Darklight 38 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 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
142. bonv 1625 03.05.20 16:41 Сейчас в теме
(114) Эта версия платформы очень не стабильно работает с двоичными данными
115. starovton 11 29.11.19 13:21 Сейчас в теме
как с помощью библы получать данные в "бесконечном" потоке?
116. bonv 1625 29.11.19 17:18 Сейчас в теме
(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", Данные,ДополнительныеПараметры);
Показать
120. bonv 1625 10.12.19 19:10 Сейчас в теме
(119) Вы не совсем то, что нужно делаете.
Смотрите раздел Работа в рамках сессии. Там пример похож на то, что вам нужно
121. dimauspeh 20.12.19 16:21 Сейчас в теме
(120) Спасибо! Разобрался! В обычном приложении все супер. А как в УФ подключить библиотеку?
122. bonv 1625 20.12.19 17:08 Сейчас в теме
(121) Добавить общий модуль (просто скопировать из конфигурации библиотеки).
Работает только в серверном контексте исполнения
126. newtraveller 24 04.02.20 22:46 Сейчас в теме
Здорово что реализовали здорово что реализовали вычисление сигнатур S3. В свое время решал подобную задачу и в статье (https://infostart.ru/public/1189904/) описал идею тестирования корректности формирования подписи. Суть в том, что берем примеры с сайта Амазон. В них есть готовые исходные данные, промежуточные результаты и итог. Примеров несколько десятков. Вот вам идея для развития проекта.
127. gztrbnst 13.02.20 19:37 Сейчас в теме
Добрый день!
Подскажите, пожалуйста, есть ли в библиотеке возможность передать имя файла, чтобы результат запроса сохранялся в этот файл? (например, как через метод "Получить" у "HTTPСоединение")
143. bonv 1625 03.05.20 16:42 Сейчас в теме
128. kraynev-navi 703 26.02.20 11:07 Сейчас в теме
Добрый день! Спасибо за удобный инструмент!
Внесу свои 5 копеек.
При передачи параметра, содержащего закодированный урл с несколькими "вложенными параметрами" происходит некорректное декодирование.
Например урл: https://www.DOMEN.ru?URL_INNER=http%3A%2F%2Fwww.kuku.ru%2F%3Fs%3D1%26b%3D2&OTHER=1
Будет расценен как: https://www.DOMEN.ru?URL_INNER=http%3A%2F%2Fwww.kuku.ru%2F%3Fs%3D1&OTHER=1&b=2

Предлагаемое решение:
	
	//Запрос = РаскодироватьСтроку(Запрос, СпособКодированияСтроки.URLВКодировкеURL);
	//Для Каждого СтрокаКлючРавноПараметр Из СтрРазделить(Запрос, "&", Ложь) Цикл
	Для Каждого СтрокаКлючРавноПараметрЗакодированный Из СтрРазделить(Запрос, "&", Ложь) Цикл

		СтрокаКлючРавноПараметр = РаскодироватьСтроку(СтрокаКлючРавноПараметрЗакодированный , СпособКодированияСтроки.URLВКодировкеURL);
154. bonv 1625 11.05.20 19:08 Сейчас в теме
129. Beowolf707 17.03.20 11:40 Сейчас в теме
Добрый день, подскажите пожалуйста, выполняю запрос
Заголовки = Новый Соответствие;
Заголовки.Вставить("Authorization", "Bearer "+ Токен);
Результат = ConnectorHTTP.Get("xxxxxxxxx:344/api/GetNewMessageID",, Новый Структура("Заголовки", Заголовки));

Код ответа 404, хотя в Postman все адекватно.

PS Разобрался, нужен был Post
130. fieryfist 15 26.03.20 16:07 Сейчас в теме
Есть небольшая ошибка в версии 1.3.4 в сроке №1939, если в заголовках передается host, значение заголовка дублируется, нужно добавить проверку
Если Не ЗаголовокHostЕстьВЗапросе Тогда
	ЗаголовокHostЕстьВЗапросе = Заголовок = "host";
КонецЕсли;


Автор, большое спасибо за труды!
144. bonv 1625 03.05.20 16:44 Сейчас в теме
(130) Исправлено.
Если host указывался, чтобы работать с нестандартными портами, то это исправлено тоже.
131. Fragster 1168 16.04.20 11:21 Сейчас в теме
Отличная вещь! Не нашел ответа на то, сжимает ли она запрос?
133. bonv 1625 16.04.20 19:21 Сейчас в теме
(131) Сжатия тела запроса пока нет. Только распаковка ответа.
Для какой задачи это нужно?
134. Fragster 1168 17.04.20 11:47 Сейчас в теме
(133) передавать большие порции хорошо сжимаемых данных через плохой канал, например выгрузку с ТСД с фуры "в полях".
145. bonv 1625 03.05.20 16:45 Сейчас в теме
(134) Возможность сжимать тело запроса появилась, но нужно понимать, что сервер должен быть настроен соответствующим образом
Fragster; +1 – Ответить
228. eeeio 127 30.05.22 12:39 Сейчас в теме
(145) А что вы имеете в виду под "соответствующим образом"? Где прочитать или что погуглить?
229. bonv 1625 30.05.22 15:55 Сейчас в теме
(228) Например, для apache это делается таким образом
https://httpd.apache.org/docs/2.2/mod/mod_deflate.html#input

Либо бэкенд должен уметь сам распаковывать gzip
132. пользователь 16.04.20 14:33
Сообщение было скрыто модератором.
...
135. 7OH 90 22.04.20 18:37 Сейчас в теме
А может кто-то подсказать, как получить фотку из аутлука с авторизацией на офис 365 ?
Можно даже не за обычное спасибо.
Есть адрес https://eur.delve.office.com/mt/v3/people/profileimage?userId=xxxx&size=L
В браузере заходишь, появляется окошко офис365, прохожу авторизацию и получаю фотку.
А вот с коннектором чего-то не хотит - как редирект оно окно 365 не "хавает" и сразу возвращает 401.
137. leemuar 63 25.04.20 13:47 Сейчас в теме
(135) передавать данные авторизации в запросе. Но к этой бибилиотеке это не имеет никакого отношения. Судя по беглому поиску - там OAUTH: получаете авторизационный токен одним запросом, затем в остальных передаете этот токен
138. 7OH 90 25.04.20 15:27 Сейчас в теме
(137) было бы приятно, Если бв библиотека как и с редиректом это могла. А пока надо понимать самому, куда посылает исходный адрес и где авторизовываться в итоге.
139. leemuar 63 25.04.20 17:20 Сейчас в теме
(138) то что вы хотите - это не зона ответственности этой библиотеки. Это уже бизнес-логика поверх протокола HTTP. Вам стоит поискать библиотеку работы с Office 365 HTTP API. Ну или написать ее самому
136. Cyberhawk 135 25.04.20 12:50 Сейчас в теме
Запустил обработку "Тесты" из коробки, в конце выдает
<404> не равно <200>: 
{Обработка.Тесты.МодульОбъекта(895)}:		ВызватьИсключение(СтрШаблон("<%1> не равно <%2>: %3", ЛевоеЗначение, ПравоеЗначение, Пояснение));
{Обработка.Тесты.МодульОбъекта(519)}:	УтверждениеВерно(Ответ.КодСостояния, 200);
{Обработка.Тесты.МодульОбъекта(45)}:	Тест_PostИРедирект();
{Обработка.Тесты.Форма.Форма.Форма(18)}:		РеквизитФормыВЗначение("Объект").ВыполнитьТестыНаСервере();
{Обработка.Тесты.Форма.Форма.Форма(6)}:	ВыполнитьТестыНаСервере();
Во всплывающих сообщениях, тем не менее, все тесты предварены лычкой [OK].
146. bonv 1625 03.05.20 16:45 Сейчас в теме
(136) Работа с тестами поменялась. Если какой-то упадет, то будет сразу понятно какой именно
147. Cyberhawk 135 03.05.20 17:04 Сейчас в теме
(146)
поменялась
это как?
148. bonv 1625 03.05.20 17:10 Сейчас в теме
(147) Выполнение тестов не останавливается на первом упавшем. Вообще можно скачать и посмотреть
149. Cyberhawk 135 03.05.20 17:11 Сейчас в теме
(148)
Выполнение тестов не останавливается на первом упавшем
Я выше привел пример противоположного: падает, не дождавшись завершения всех тестов
150. bonv 1625 03.05.20 17:16 Сейчас в теме
(149) Так я и пишу, что теперь все выбранные тесты отработают, даже если какие-то из них падают.
Ну падать к слову тоже ничего не должно
151. Cyberhawk 135 03.05.20 17:21 Сейчас в теме
(150) Так я и спрашиваю - что значит "теперь"?
152. bonv 1625 03.05.20 17:29 Сейчас в теме
(151)
Теперь это вот так
Но лучше скачать и посмотреть
Прикрепленные файлы:
140. malikov_pro 1409 03.05.20 10:03 Сейчас в теме
Не увидел обработку исключения при отсутствии связи по тайм ауту.
В моей реализации
Попытка
	HTTPОтвет = HTTPСоединение.Получить(HTTPЗапрос);
Исключение
	СообщитьОбОшибке(ИмяОбмена, ОписаниеОшибки());
	Отказ = Истина;
	HTTPОтвет = Новый Структура;
	HTTPОтвет.Вставить("КодСостояния", 500);
КонецПопытки;
Показать
141. bonv 1625 03.05.20 16:17 Сейчас в теме
(140) Ошибка соединения (физически сервер выключен, используем неправильный адрес, прокси не указан и др.) и 500-ка (любая ошибка на сервере, ответ от балансера при выключенном бэкенде и др.) это все же совершенно разные вещи
153. malikov_pro 1409 03.05.20 18:14 Сейчас в теме
(141) С точки зрения прикладного уровня это ошибки транспортного уровня, по которой нужно прекратить выполнять процедуру и при необходимости откатить транзакцию.
Сейчас придется оборачивать в попытку ВызватьМетодВСеансе().
155. arti4k 31.05.20 10:31 Сейчас в теме
Подскажите пожалуйста нет ли видео по данному материалу?
156. bonv 1625 31.05.20 23:18 Сейчас в теме
(155) Видео нет. А зачем? Чего не хватает в текущем описании?
157. zeek 45 08.06.20 23:42 Сейчас в теме
А есть какой-то живой пример работы именно с Amazon, а не с yandex ?
158. bonv 1625 09.06.20 02:06 Сейчас в теме
(157) В тестах можно посмотреть
Процедура Тест_АутентификацияAWS4_HMAC_SHA256() Экспорт

Пример работы с сервисом Amazon SQS.

Если речь именно про S3, то разница с cloud.yandex.ru только в регионе и URL.
159. zeek 45 09.06.20 10:48 Сейчас в теме
(158) Вопрос именно по S3. Подставляю свои параметры доступа, пытаюсь запушить файл, но приходит ответ 400.
160. zeek 45 09.06.20 15:21 Сейчас в теме
Разобрался. Спасибо
161. Evg-Lylyk 5530 27.08.20 12:00 Сейчас в теме
Приветствую, при использовании возникла след. проблема
Задача: сгенерировать ссылку с параметрами и открыть ее на клиенте
Что то вроде: https://yandex.ru/?from=reg_portal&lang=ru
но модуль коннектора серверный и без вызова сервера
напрашивается часть модуля перенести в КлиентСервер
еще есть сценарии когда нужно делать HTTP запрос с клиента
162. artbear 1590 27.08.20 12:13 Сейчас в теме
(0) (161) Да, очень интересно, почему модуль только серверный, а не серверный-клиентский?

иногда нужно собирать\выполнять запросы и на клиенте
163. bonv 1625 04.09.20 16:37 Сейчас в теме
(161) Сейчас библиотека представляет из себя один модуль, который легко внедрять либо как общий модуль, либо скопировать содержимое в модуль обработки например.

(161)
(162) Что касается работы на клиенте. В тонком клиенте часть объектов не работает, в веб-клиенте не работает основная часть.

Мысли сделать версию, разбив на подмодули, у меня есть, но по срокам пока ничего не скажу
164. SlaSla 28.09.20 14:23 Сейчас в теме
Добрый день!

Подскажите плиз как используя данную библиотеку возможно работать через webdav яндекс-диска, (скачивать, закачивать, создавать урл для публичного доступа...)

В частности интересует как получить через webdav список файлов в папке яндекс диска.
165. JohnyDeath 302 28.09.20 18:04 Сейчас в теме
(164) может не совсем в тему, но подсмотреть можно здесь: https://github.com/kuntashov/oscript-yadisk
166. user1470505 29.09.20 14:40 Сейчас в теме
Запомним эту штуку на будущее
167. Pryanishnikov_Vladimir 02.10.20 11:22 Сейчас в теме
Как получить файл через Post запрос используя Вашу библиотеку?
168. REWS-DES 19.10.20 13:19 Сейчас в теме
Подскажите как мне указать параметры НастройкиСериализацииJSON

НастройкиСериализацииJSON.ВариантЗаписиДаты = ВариантЗаписиДатыJSON.ЛокальнаяДатаСоСмещением;

Чтобы JSON Записал дату Со Смещением, а прочитал так как это работает
ПреобразованиеДат = СтрРазделить(ИменаСвойствСоЗначениямиДата, ",");
	
ДополнительныеПараметры = Новый Структура;
	
ПараметрыПреобразования = Новый Структура;
ПараметрыПреобразования.Вставить("ФорматДатыJSON", ФорматДатыJSON.ISO);
ПараметрыПреобразования.Вставить("ИменаСвойствСоЗначениямиДата", ПреобразованиеДат);
	
ДополнительныеПараметры.Вставить("ПараметрыПреобразованияJSON", ПараметрыПреобразования);
Показать
169. stos 34 19.10.20 19:56 Сейчас в теме
Добрый день!


Как можно отправить POST запрос, если в api задана схема запроса:
{
file_descr : String,
file_type : String,
file : file
}
т.е. два поля строкового типа, а третье - двоичные данные
170. stos 34 20.10.20 12:01 Сейчас в теме
171. GrRusel 28.01.21 17:01 Сейчас в теме
День добрый.
Помогите разобраться.
Отправляю в PostMan запрос и получаю ответ. Всё ок(см.прикреп.изображение).
А через Коннектор:
Результат = КоннекторHTTP.PostJson("mobile.api.crpt.ru/mobile/check", Новый Структура("code", "046064860301570000000093236"));

вываливается с ошибкой: Ошибка работы с Интернет: Server returned nothing (no headers, no data)
Там сначала приходит ответ 307. Идёт повторный запрос но уже на https и в этом запросе уже вставляется аутентификация и соотв. тут же валится :(
Прикрепленные файлы:
172. bonv 1625 28.01.21 18:55 Сейчас в теме
(171) Адрес указывать нужно полный, со схемой https://mobile.api.crpt.ru/mobile/check
173. GrRusel 28.01.21 19:07 Сейчас в теме
(172)
Указывал.
Тогда сразу валится: "Ошибка работы с Интернет: Server returned nothing (no headers, no data)", даже не получая 307 ответ.
174. bonv 1625 28.01.21 19:18 Сейчас в теме
(173) Судя по картинке в Postman указывается какой-то дополнительный заголовок, который не указывается в Коннекторе

даже не получая 307 ответ.

Потому что код 307 используется, чтобы сделать редирект с http на https. Если указывать схему сразу правильно, то этого лишнего редиректа не будет
175. GrRusel 29.01.21 10:30 Сейчас в теме
(174) Да вы правы, не хватало одного заголовка. Всё ок. Спасибо, вопрос закрыт
176. user624032_marcel.zglavutsa 09.03.21 15:07 Сейчас в теме
Друзья, подскажите:
Нужно отправить пост запрос с простой строкой в теле ("X,1,______,_,__;;;;;;;");
какая конструкция должна быть с использованием этого коннектора?
Заранее блогодарен.
177. bonv 1625 10.03.21 17:54 Сейчас в теме
(176) см. в описании раздел Отправка произвольных данных
178. kaliuzhnyi 136 01.04.21 01:19 Сейчас в теме
Давно увидел этот проект, но все как-то оттягивал его внедрение. И вот теперь я жалею, что так долго тянул время!

Автору большое уважение и признание. Проект действительно упрощает и ускоряет разработку.

Очень надеюсь на развитие проекта!
mc2; bonv; +2 – Ответить
179. rozer 324 01.04.21 08:07 Сейчас в теме
не очень понял версии за 1-10 sm и платные чем отличаются ?
180. JohnyDeath 302 01.04.21 09:49 Сейчас в теме
(179) ни чем, это просто благодарность автору. Сколько не жалко, такую и качаешь
181. rozer 324 01.04.21 12:54 Сейчас в теме
(180) спасибо )

интересно что на такое ответила "техподдержка"

Добрый день, Роман.
Файлы за стартмани не являются готовым решением. Это примеры, шаблоны, алгоритмы, "стройматериалы" для вашей учетной системы (для других программистов). Нет гарантии работоспособности. Вы скачиваете и используете на свой страх и риск. Готовые коммерческие решения с техподдержкой только за рубли.
182. rozer 324 01.04.21 12:55 Сейчас в теме
и теперь я в смятении техподдержка - это автор или это ребята которые спрашивают у автора и "передают дальше" ))
183. MovaRemi 12.04.21 17:54 Сейчас в теме
Здравствуйте!
Есть задача передать файл POST-запросом в теле запроса в параметре "data", куда помещаю файл в виде base64-строки. Использование вашего метода через структуру Файлы.Вставить("Данные", Base64Значение()) не могу использовать, потому что в структуре нет свойства "data". Пробовал обходными путями с помощью ДополнительныеПараметры.Данные, но не получается.
Возможно вашим инструментом это сделать?
Вот пример фрагмента тела запроса, который я пытаюсь сделать:
{
"data": "data:image/gif;base64,R0lGODlhEgASAIIAAHqIltvp9/L4/+nz/+by/5imtN7s+gAAACH5BAAAAAAA­LAAAAAASABIAAAhxAAsIHEiwIEEBCBMqXChAIMOHCR1CfChwgIGLGDNmHFBR­o0eMHAtYxAgAAEmTF0OOvFjSZEuQHTO2LLkxpkyaNUVqnIkypU0DL1/61Hmy­6NCVH3MSSOqRgEACAQxEnSq1alSnBaAG2Mq1K1esBsMSDAgAOw=="
}
184. bonv 1625 13.04.21 00:45 Сейчас в теме
(183)
Json = Новый Структура("data", "data:image/gif;base64," + Base64Строка(Картинка));
Ответ = КоннекторHTTP.Post(url, Неопределено, Новый Структура("Json", Json));

// Или просто 
Результат = КоннекторHTTP.PostJson(url, Json);
MovaRemi; +1 – Ответить
185. trio-tlt 21.04.21 08:20 Сейчас в теме
Привет.

Есть вот такой json для вэб-хука discord
{
"username": "Webhook",
"avatar_url": "https://i.imgur.com/4M34hi2.png",
"content": "Text message. Up to 2000 characters.",
"embeds": [
{
"author": {
"name": "Birdie♫",
"url": "https://www.reddit.com/r/cats/",
"icon_url": "https://i.imgur.com/R66g1Pe.jpg"
},
"title": "Title",
"url": "https://google.com/",
"description": "Text message. You can use Markdown here. *Italic* **bold** __underline__ ~~strikeout~~ [hyperlink](https://google.com) `code`",
"color": 15258703,
"fields": [
{
"name": "Text",
"value": "More text",
"inline": true
},
{
"name": "Even more text",
"value": "Yup",
"inline": true
},
{
"name": "Use `\"inline\": true` parameter, if you want to display fields in the same line.",
"value": "okay..."
},
{
"name": "Thanks!",
"value": "You're welcome :wink:"
}
],

"image": {
"url": "https://i6.imageban.ru/out/2021/04/20/298f63631d98fd9718c3a67e4be2b5ab.jpg"
},
"footer": {
"text": "Woah! So cool! :smirk:",
"icon_url": "https://i.imgur.com/fKL31aD.jpg"
}
}
]
}

В методе КоннекторHTTP.PostJson() можно передать структурой, которая потом преобразуется в json. Но, чтобы описать такую структуру надо не хило так заморочиться...
Пробовал передавать готовый json прям текстом, но в результате текст json изменяется: добавляются /n,/...
"{\n\"username\": \"Webhook\",\n\"avatar_url\": \"https://i.imgur.com/4M34hi2.png\",\n\"content\": \"Text me

Пробовал победить это с помощью
ДополнительныеПарамеры = новый Структура;
	
	ПараметрыЗаписиJSON = Новый Структура;
	ПараметрыЗаписиJSON.Вставить("ПереносСтрок", ПереносСтрокJSON.Авто);
	ПараметрыЗаписиJSON.Вставить("СимволыОтступа", " ");
	ПараметрыЗаписиJSON.Вставить("ИспользоватьДвойныеКавычки", Истина);
	ПараметрыЗаписиJSON.Вставить("ЭкранированиеСимволов", ЭкранированиеСимволовJSON.Нет);
	ПараметрыЗаписиJSON.Вставить("ЭкранироватьУгловыеСкобки", Ложь);
	ПараметрыЗаписиJSON.Вставить("ЭкранироватьРазделителиСтрок", Ложь);
	ПараметрыЗаписиJSON.Вставить("ЭкранироватьАмперсанд", Ложь);
	ПараметрыЗаписиJSON.Вставить("ЭкранироватьОдинарныеКавычки", Ложь);
	ПараметрыЗаписиJSON.Вставить("ЭкранироватьСлеш", Ложь);
	
	ДополнительныеПарамеры.Вставить("ПараметрыЗаписиJSON", ПараметрыЗаписиJSON);
	
	Результат = КоннекторHTTP.PostJson("http://httpbin.org/post", JSON, ДополнительныеПарамеры);
Показать

Не получается...

Было бы круто сделать некоторый ключ, при наличии которого переданный JSON вообще бы никак не обрабатывался
186. ivangrant 11 26.04.21 12:28 Сейчас в теме
Чем отличаются между собой четыре одинаковых по названию файла?
"Коннектор: удобный HTTP-клиент для 1С:Предприятие 8".
Написано: "просто скопируйте в общий модуль". Что именно копировать? В каком формате у вас файлы?
189. bonv 1625 04.05.21 23:35 Сейчас в теме
(186)
Чем отличаются между собой четыре одинаковых по названию файла?

Файлы одинаковые. Сумма оплаты выбирается по желанию

Написано: "просто скопируйте в общий модуль". Что именно копировать? В каком формате у вас файлы?

Файл cf, из которого можно скопировать общий модуль как общий модуль к себе в конфигурацию/расширение или скопировать текст и вставить например в обработку
187. kaliuzhnyi 136 28.04.21 23:10 Сейчас в теме
Добрый день коллеги.
Вопрос касательно лицензии - можно включать данную библиотеку в свои разработки?
188. bonv 1625 04.05.21 23:30 Сейчас в теме
(187) Можно, при условии сохранения преамбулы модуля с лицензией
190. minotavr_x86 8 12.05.21 14:09 Сейчас в теме
Переписал что бы работало в режиме совместимости с 8.2 на платформе 8.3.18.
Добавляем функции в конец модуля. Там где используется поиск с конца заменяем на функцию СтрНайтиСКонца и написана функция СтрЗаканчиваетсяНа там соответственно ничего менять не надо. Еще есть место где в функции СтрНайти указано СНачала просто трем.

Функция РазвернутьСтроку(СтрокаИсходная)
	ДлиннаСтроки = СтрДлина(СтрокаИсходная);
	
	РазвернутаяСтрока = "";
	Для инд = 0 по ДлиннаСтроки -1 Цикл
		РазвернутаяСтрока = РазвернутаяСтрока + Сред(СтрокаИсходная, ДлиннаСтроки -  инд, 1);	
	КонецЦикла;
	Возврат РазвернутаяСтрока;
КонецФункции

Функция СтрНайтиСКонца(СтрокаИсходная, СтрокаПоиска) Экспорт
	ДлиннаСтроки = СтрДлина(СтрокаИсходная);
	ДлиннаСтрокиПоиска = СтрДлина(СтрокаПоиска);  

	РазвернутаяСтрока = РазвернутьСтроку(СтрокаИсходная);
	РазвернутаяСтрокаПоиска = РазвернутьСтроку(СтрокаПоиска); 

	НомерСимвола = СтрНайти(РазвернутаяСтрока, РазвернутаяСтрокаПоиска);
	Если НомерСимвола <> 0 Тогда  
		НомерСимвола = ДлиннаСтроки - (НомерСимвола + ДлиннаСтрокиПоиска) + 2 ;
	КонецЕсли;
	Возврат НомерСимвола;
КонецФункции

Функция СтрЗаканчиваетсяНа(СтрокаИсходная, СтрокаПоиска)
	ДлиннаСтроки = СтрДлина(СтрокаИсходная);
	ДлиннаСтрокиПоиска = СтрДлина(СтрокаПоиска);  

	Концовка  = Прав(СтрокаИсходная, ДлиннаСтрокиПоиска ); 
	Возврат Концовка = СтрокаПоиска;
КонецФункции
Показать
Namihika; mip128; +2 – Ответить
191. gepar1020 04.06.21 14:38 Сейчас в теме
Добрый день! Post запрос с digest-анутификацией не работает. Возвращает 401
192. bonv 1625 08.06.21 04:44 Сейчас в теме
(191) Можно увидеть пример запроса?
193. gag65 10.06.21 01:58 Сейчас в теме
Чем отличаются файлы cf за 1, 3, 5 и 10 стартмани?
194. bonv 1625 12.06.21 16:03 Сейчас в теме
(193) Файлы одинаковые. Сами можете выбрать сколько готовы заплатить
195. MAXXL 13 26.06.21 18:50 Сейчас в теме
Добрый день.
Подскажите как для POST запроса правильно оформить сложные параметры?
для простых все понятно -
	
Данные = Новый Структура;
Данные.Вставить("name", СокрЛП(ДанныеНоменклатуры.Номенклатура.НаименованиеПолное));
Данные.Вставить("type_id", ИдТипаТовара);

а если параметры это массив? Т.е. вот такая строка должна получиться:
"&features[КодХарактеристики]=аа173"
196. MAXXL 13 26.06.21 20:23 Сейчас в теме
(195)или еще больше массив
&features[weight][value]=15&features[weight][unit]=kg&features[polnota][value]=5
197. JohnyDeath 302 27.06.21 07:15 Сейчас в теме
(195) а это разве не
Данные.Вставить("features[КодХарактеристики]", "аа173");

?
198. MAXXL 13 27.06.21 10:50 Сейчас в теме
(197)
Данные.Вставить("features[КодХарактеристики]", "аа173");

Так ругается на символы [ ] в создаваемом ключе
199. JohnyDeath 302 28.06.21 09:28 Сейчас в теме
(198) Сделай "Данные" соответствием вместо структуры
201. Shulepov-Alexandr 1 19.07.21 10:43 Сейчас в теме
всем привет.
объясните почему так? вкладку настройки не заполняю, просто запускаю тест, всё ок, кроме шести операций:
FAIL Тест_PostИРедирект
<404> не равно <200>:
{Обработка.Тесты.МодульОбъекта(1059)}: ВызватьИсключение(СтрШаблон("<%1> не равно <%2>: %3", ЛевоеЗначение, ПравоеЗначение, Пояснение));
{Обработка.Тесты.МодульОбъекта(543)}: УтверждениеВерно(Ответ.КодСостояния, 200);
{(1)}:Тест_PostИРедирект()
{Обработка.Тесты.МодульОбъекта(104)}: Выполнить(СтрокаТаблицы.Тест + "()");
{Обработка.Тесты.Форма.Форма.Форма(119)}: РезультатаВыполнения = РеквизитФормыВЗначение("Объект").ВыполнитьТестыНаСервере(РеквизитФормыВЗначение("Тесты"));

FAIL Тест_GetУспешныйРедиректОтносительныйАдрес
Недопустимое состояние потока записи JSON
{ОбщийМодуль.КоннекторHTTP.Модуль(635)}: Объект = ПрочитатьJSON(
{ОбщийМодуль.КоннекторHTTP.Модуль(411)}: Возврат JsonВОбъект(РаспаковатьОтвет(Ответ), Ответ.Кодировка, ПараметрыПреобразованияJSON);
{Обработка.Тесты.МодульОбъекта(569)}: Результат = КоннекторHTTP.КакJson(Ответ);
{(1)}:Тест_GetУспешныйРедиректОтносительныйАдрес()
{Обработка.Тесты.МодульОбъекта(104)}: Выполнить(СтрокаТаблицы.Тест + "()");
{Обработка.Тесты.Форма.Форма.Форма(119)}: РезультатаВыполнения = РеквизитФормыВЗначение("Объект").ВыполнитьТестыНаСервере(РеквизитФормыВЗначение("Тесты"));

Тест_GetУспешныйРедиректАбсолютныйАдрес
по причине:
Недопустимое состояние потока записи JSON
Недопустимое состояние потока записи JSON
{ОбщийМодуль.КоннекторHTTP.Модуль(635)}: Объект = ПрочитатьJSON(
{ОбщийМодуль.КоннекторHTTP.Модуль(411)}: Возврат JsonВОбъект(РаспаковатьОтвет(Ответ), Ответ.Кодировка, ПараметрыПреобразованияJSON);
{Обработка.Тесты.МодульОбъекта(579)}: Результат = КоннекторHTTP.КакJson(Ответ);
{(1)}:Тест_GetУспешныйРедиректАбсолютныйАдрес()
{Обработка.Тесты.МодульОбъекта(104)}: Выполнить(СтрокаТаблицы.Тест + "()");
{Обработка.Тесты.Форма.Форма.Форма(119)}: РезультатаВыполнения = РеквизитФормыВЗначение("Объект").ВыполнитьТестыНаСервере(РеквизитФормыВЗначение("Тесты"));

FAIL Тест_GetЗацикленныйРедирект
по причине:
Недопустимое состояние потока записи JSON
Недопустимое состояние потока записи JSON
{ОбщийМодуль.КоннекторHTTP.Модуль(635)}: Объект = ПрочитатьJSON(
{ОбщийМодуль.КоннекторHTTP.Модуль(411)}: Возврат JsonВОбъект(РаспаковатьОтвет(Ответ), Ответ.Кодировка, ПараметрыПреобразованияJSON);
{Обработка.Тесты.МодульОбъекта(589)}: КоннекторHTTP.КакJson(КоннекторHTTP.Get("http://httpbin.org/redirect/31"));
{(1)}:Тест_GetЗацикленныйРедирект()
{Обработка.Тесты.МодульОбъекта(104)}: Выполнить(СтрокаТаблицы.Тест + "()");
{Обработка.Тесты.Форма.Форма.Форма(119)}: РезультатаВыполнения = РеквизитФормыВЗначение("Объект").ВыполнитьТестыНаСервере(РеквизитФормыВЗначение("Тесты"));

FAIL Тест_GetОтключенныйРедирект
по причине:
Недопустимое состояние потока записи JSON
{Обработка.Тесты.МодульОбъекта(1081)}: ВызватьИсключение(ТекстИсключения);
{Обработка.Тесты.МодульОбъекта(591)}: ВерноеИсключение(ИнформацияОбОшибке(), "СлишкомМногоПеренаправлений");
{(1)}:Тест_GetЗацикленныйРедирект()
{Обработка.Тесты.МодульОбъекта(104)}: Выполнить(СтрокаТаблицы.Тест + "()");
{Обработка.Тесты.Форма.Форма.Форма(119)}: РезультатаВыполнения = РеквизитФормыВЗначение("Объект").ВыполнитьТестыНаСервере(РеквизитФормыВЗначение("Тесты"));
<404> не равно <307>:
{Обработка.Тесты.МодульОбъекта(1059)}: ВызватьИсключение(СтрШаблон("<%1> не равно <%2>: %3", ЛевоеЗначение, ПравоеЗначение, Пояснение));
{Обработка.Тесты.МодульОбъекта(604)}: УтверждениеВерно(Ответ.КодСостояния, 307);
{(1)}:Тест_GetОтключенныйРедирект()
{Обработка.Тесты.МодульОбъекта(104)}: Выполнить(СтрокаТаблицы.Тест + "()");
{Обработка.Тесты.Форма.Форма.Форма(119)}: РезультатаВыполнения = РеквизитФормыВЗначение("Объект").ВыполнитьТестыНаСервере(РеквизитФормыВЗначение("Тесты"));
Недопустимое состояние потока записи JSON
{ОбщийМодуль.КоннекторHTTP.Модуль(635)}: Объект = ПрочитатьJSON(
{ОбщийМодуль.КоннекторHTTP.Модуль(411)}: Возврат JsonВОбъект(РаспаковатьОтвет(Ответ), Ответ.Кодировка, ПараметрыПреобразованияJSON);
{Обработка.Тесты.МодульОбъекта(615)}: КоннекторHTTP.КакJson(Ответ);
{(1)}:Тест_РедиректСУказаниемURL()
{Обработка.Тесты.МодульОбъекта(104)}: Выполнить(СтрокаТаблицы.Тест + "()");
{Обработка.Тесты.Форма.Форма.Форма(119)}: РезультатаВыполнения = РеквизитФормыВЗначение("Объект").ВыполнитьТестыНаСервере(РеквизитФормыВЗначение("Тесты"));

FAIL Тест_РедиректСУказаниемURL
по причине:
Недопустимое состояние потока записи JSON
203. bonv 1625 19.07.21 18:20 Сейчас в теме
(201)
Сейчас есть проблемы с сервисом http://httpbin.org/
который используется для тестирования.
Поэтому эти ошибки и возникают
202. Shulepov-Alexandr 1 19.07.21 12:34 Сейчас в теме
коннектор 2.1.3, 1С:Предприятие 8.3 (8.3.18.1520)

так же обнаружил

FAIL Тест_ПовторСУчетомЗаголовкаRetryAfterDate
по причине:
Ошибка работы с Интернет: Не могу установить соединение
{ОбщийМодуль.КоннекторHTTP.Модуль(1577)}: ВызватьИсключение(ПодробноеПредставлениеОшибки(ОшибкаВыполненияЗапроса));
{ОбщийМодуль.КоннекторHTTP.Модуль(907)}: Ответ = ОтправитьЗапрос(Сессия, ПодготовленныйЗапрос, НастройкиПодключения);
{ОбщийМодуль.КоннекторHTTP.Модуль(46)}: Возврат ВызватьHTTPМетод(ТекущаяСессия, "GET", URL, ДополнительныеПараметры);
{Обработка.Тесты.МодульОбъекта(971)}: Ответ = КоннекторHTTP.Get(URL, Неопределено, ДополнительныеПараметры);
{(1)}:Тест_ПовторСУчетомЗаголовкаRetryAfterDate()
{Обработка.Тесты.МодульОбъекта(104)}: Выполнить(СтрокаТаблицы.Тест + "()");
{Обработка.Тесты.Форма.Форма.Форма(119)}: РезультатаВыполнения = РеквизитФормыВЗначение("Объект").ВыполнитьТестыНаСервере(РеквизитФормыВЗначение("Тесты"));

FAIL Тест_ПовторСУчетомЗаголовкаRetryAfterDuration
по причине:
Ошибка работы с Интернет: Не могу установить соединение
{ОбщийМодуль.КоннекторHTTP.Модуль(1577)}: ВызватьИсключение(ПодробноеПредставлениеОшибки(ОшибкаВыполненияЗапроса));
{ОбщийМодуль.КоннекторHTTP.Модуль(907)}: Ответ = ОтправитьЗапрос(Сессия, ПодготовленныйЗапрос, НастройкиПодключения);
{ОбщийМодуль.КоннекторHTTP.Модуль(46)}: Возврат ВызватьHTTPМетод(ТекущаяСессия, "GET", URL, ДополнительныеПараметры);
{Обработка.Тесты.МодульОбъекта(951)}: Ответ = КоннекторHTTP.Get(URL, Неопределено, ДополнительныеПараметры);
{(1)}:Тест_ПовторСУчетомЗаголовкаRetryAfterDuration()
{Обработка.Тесты.МодульОбъекта(104)}: Выполнить(СтрокаТаблицы.Тест + "()");
{Обработка.Тесты.Форма.Форма.Форма(119)}: РезультатаВыполнения = РеквизитФормыВЗначение("Объект").ВыполнитьТестыНаСервере(РеквизитФормыВЗначение("Тесты"));

FAIL Тест_ПовторПослеОшибки502
по причине:
Ошибка работы с Интернет: Не могу установить соединение
{ОбщийМодуль.КоннекторHTTP.Модуль(1577)}: ВызватьИсключение(ПодробноеПредставлениеОшибки(ОшибкаВыполненияЗапроса));
{ОбщийМодуль.КоннекторHTTP.Модуль(907)}: Ответ = ОтправитьЗапрос(Сессия, ПодготовленныйЗапрос, НастройкиПодключения);
{ОбщийМодуль.КоннекторHTTP.Модуль(46)}: Возврат ВызватьHTTPМетод(ТекущаяСессия, "GET", URL, ДополнительныеПараметры);
{Обработка.Тесты.МодульОбъекта(991)}: Ответ = КоннекторHTTP.Get(URL, Неопределено, ДополнительныеПараметры);
{(1)}:Тест_ПовторПослеОшибки502()
{Обработка.Тесты.МодульОбъекта(104)}: Выполнить(СтрокаТаблицы.Тест + "()");
{Обработка.Тесты.Форма.Форма.Форма(119)}: РезультатаВыполнения = РеквизитФормыВЗначение("Объект").ВыполнитьТестыНаСервере(РеквизитФормыВЗначение("Тесты"));

OK Тест_ПовторПослеОшибкиПодключения

FAIL Тест_Ping
по причине:
Ошибка работы с Интернет: Не могу установить соединение
{ОбщийМодуль.КоннекторHTTP.Модуль(1577)}: ВызватьИсключение(ПодробноеПредставлениеОшибки(ОшибкаВыполненияЗапроса));
{ОбщийМодуль.КоннекторHTTP.Модуль(907)}: Ответ = ОтправитьЗапрос(Сессия, ПодготовленныйЗапрос, НастройкиПодключения);
{ОбщийМодуль.КоннекторHTTP.Модуль(46)}: Возврат ВызватьHTTPМетод(ТекущаяСессия, "GET", URL, ДополнительныеПараметры);
{Обработка.Тесты.МодульОбъекта(1025)}: Ответ = КоннекторHTTP.Get(URL);
{(1)}:Тест_Ping()
{Обработка.Тесты.МодульОбъекта(104)}: Выполнить(СтрокаТаблицы.Тест + "()");
{Обработка.Тесты.Форма.Форма.Форма(119)}: РезультатаВыполнения = РеквизитФормыВЗначение("Объект").ВыполнитьТестыНаСервере(РеквизитФормыВЗначение("Тесты"));
204. bonv 1625 19.07.21 18:21 Сейчас в теме
(202) А для этих тестов требуется специфический сервис, который не публичный на данный момент
205. Shulepov-Alexandr 1 19.07.21 19:08 Сейчас в теме
ок, понятно, в целом код получается рабочий?
206. bonv 1625 19.07.21 19:17 Сейчас в теме
207. Zelenhof 43 28.07.21 14:29 Сейчас в теме
Добрый день.
Как передать в тело POST вот такой вариант параметров? Пробовал уже по разному.
Прикрепленные файлы:
208. Zelenhof 43 28.07.21 14:39 Сейчас в теме
Добрый день.
Как реализовать такой запрос (отрабатывает в Postman и cURL)?
Прикрепленные файлы:
209. bonv 1625 28.07.21 16:33 Сейчас в теме
(208) см. раздел описания Отправка файлов и данных формы
210. Zelenhof 43 28.07.21 19:05 Сейчас в теме
(209) Смотрел. Но я так понимаю, если не передавать "Файлы", то ContenType не меняется автоматом на "form-data". И скорее всего это не устаивает API.
211. Zelenhof 43 28.07.21 21:51 Сейчас в теме
(209) Спасибо, вопрос снят. Дело было не в бобине.
212. Aleck1281 27.08.21 17:15 Сейчас в теме
Подскажите, нужно в качестве тела POST-запроса передать ассоциированный массив. Делаю так:
Данные=Новый Соответствие;
		Данные.Вставить("tovar",Товар.Номенклатура.НаименованиеПолное);
		Данные.Вставить("edizm",Строка(ЕдиницыИзмерения.Найти(Товар.ЕдИзм.Наименование).Значение));
		Данные.Вставить("price",Формат(Цена,"ЧДЦ=2; ЧРД=.; ЧГ=0"));
		Данные.Вставить("okpd_code",Товар.КодОКПД);
		Данные.Вставить("published","true");
		Данные.Вставить("magaz_num",Товар.Номенклатура.Код);
Ответ = КоннекторHTTP.КакJson(КоннекторHTTP.Post(АдресHTML+АдресРесурса, Данные));
Показать

Сервер отвечает, что неверно переданы параметры. Что я не так делаю?
214. Pryanishnikov_Vladimir 30.08.21 14:07 Сейчас в теме
(212)
Post


Возможно если передавать в качестве данных Соответсвие то нужно указать в доп параметрах ПараметрыСериализации.

Попробуйте передать в тело строку или использовать PostJson
216. bonv 1625 11.09.21 00:32 Сейчас в теме
(212) Так а что в итоге нужно передать? JSON?
213. Pryanishnikov_Vladimir 30.08.21 13:13 Сейчас в теме
Метода PatchJson нет, можно добавить? Себе сделал по аналогии с PutJson но если библиотеку обновлять можно и забыть потом.

Не всегда чей то API может возвращать чтото в теле ответа, При этом все в JSON. К примеру Обертка MongoDB на RestHeart при отправке POST запроса вернет только код 201 ОК. При этом коннектор упадет в исключение при попытке сериализации пустого тела в JSON
215. bonv 1625 11.09.21 00:31 Сейчас в теме
(213) Записал себе оба предложения
217. user625107_barabambler1s 10.11.21 15:32 Сейчас в теме
218. СергейКа 671 05.02.22 13:27 Сейчас в теме
Спасибо за библиотеку, использовал в виде расширения, помогла упростить.
Пару вещей которые пришлось правда доделать )) Возможно пригодятся другим:
1. Результат = БОНД_Коннектор.Post("УРЛ", Неопределено, ДополнительныеПараметры);
Результат.Тело возвращается в двоичных данных. Что бы получить сообщение в случае ошибки, нужно преобразовывать:
ПолучитьСтрокуИзДвоичныхДанных(Результат.Тело);

2. Сервис принимает запросы в формате мультипарт. Часть данных это текст, часть данных файл. Причем параметр файла не обязателен.
Сейчас при автоматическом формировании заголовков считает что если файлов нет, то это не мультипарт (
В результате сервис не принимает такой запрос.
Пришлось добавить параметр в структуру "ДополнительныеПараметры" и приводить принудительно к мультипарт даже если файлов нет.

3. Метод БОНД_Коннектор.GetJson не до конца преобразовывает в структуру. Пример:
Приходит Структура, один из параметров которой Массив. В массиве элементы тоже Структурой.
Один из параметров Структуры - строка Json, которой она и осталась в результате преобразования. Делал дополнительное преобразование:
Поток = Новый ПотокВПамяти();
	ЗаписьДанных = Новый ЗаписьДанных(Поток);
	ЗаписьДанных.ЗаписатьСтроку(Данные["cart"]);
	ЗаписьДанных.Закрыть();
	Структура = БОНД_Коннектор.JsonВОбъект(Поток.ЗакрытьИПолучитьДвоичныеДанные());
219. VitushVV 5 11.02.22 13:05 Сейчас в теме
Большое СПС. Отпишусь.
220. Baronello 36 15.02.22 18:59 Сейчас в теме
Приветствую, как быть в таком случае?

ПараметрыЗапроса = Новый Соответствие;
		
		Фильтры = Новый Соответствие;
		Фильтры.Вставить("since", ПериодОтчета.ДатаНачала);
		Фильтры.Вставить("to", ПериодОтчета.ДатаОкончания);
		
		ПараметрыЗапроса.Вставить("filter", Фильтры); 	// Начало периода
		
		ПараметрыЗапроса.Вставить("limit", 1000);
		ПараметрыЗапроса.Вставить("offset", offset);	
		ПараметрыЗапроса.Вставить("dir", "asc");
		
		Добавки = Новый Соответствие;
		Добавки.Вставить("analytics_data", Истина);
		Добавки.Вставить("financial_data", Истина);
		
		ПараметрыЗапроса.Вставить("with", Добавки);
Показать


Библиотека мне бахнет в урл with="Соответствие"&filter="Соответствие"
221. Baronello 36 15.02.22 20:16 Сейчас в теме
(220)
Разобрался, вместо

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


ДополнительныеПараметры.Вставить("JSON", ПараметрыЗапроса);

Если кто еще ОЗОН будет делать, то там надо вот так сделать, искать по Новый НастройкиСериализацииJSON. Fiddler'ом это дело отловил

НастройкиСериализации = Новый НастройкиСериализацииJSON;
НастройкиСериализации.ВариантЗаписиДаты = ВариантЗаписиДатыJSON.УниверсальнаяДата;
НастройкиСериализации.ФорматСериализацииДаты = ФорматДатыJSON.ISO;
222. avbolshakov 04.04.22 11:28 Сейчас в теме
Спасибо большое!

Может сможете подсказать: нужно пост запрос отправить, используя сертификат. Если делаю "классически", то все ок. Если использую коннектор - то говорит форбидден. Такую же ошибку можно получить если в постмане не указать сертификат.
Прикрепленные файлы:
231. bonv 1625 30.05.22 16:14 Сейчас в теме
(222) Разница в том, что в Коннекторе по умолчанию выполняется проверка серверного сертификата, а в вашем запросе - нет.

Тоже самое можно повторить если в Коннектор добавить доп. параметр ПроверятьSSL=Ложь

Либо в вашем рабочем коде написать
SSL = Новый ЗащищенноеСоединениеOpenSSL(КлиентскийСертификатSSL, Новый СертификатыУдостоверяющихЦентровОС)
avbolshakov; +1 – Ответить
224. nick_krsk 19 15.04.22 12:24 Сейчас в теме
Добрый день!
Не приходят данные формы на сервер, или может я что не так делаю

Данные = Новый Структура;
Данные.Вставить("comments", "Постучать в дверь");

Ответ = КоннекторHTTP.Post("http://httpbin.org/post", Данные);

На сервер эти данные не прилетают
225. nick_krsk 19 15.04.22 12:37 Сейчас в теме
Разобрался, вопрос снимаю)
226. KUAvanesov 29.04.22 22:17 Сейчас в теме
Спасибо за коннектор, очень удобная вещь!

Есть один вопрос, который не могу решить:

- Задача отправить в "form-data" файл, имя тега "file"

Я делаю вот так:

        Заголовки = Новый Соответствие;
	Заголовки.Вставить("Content-Type",  "mutipart/form-data");
	
	ДопПараметры = Новый Структура;
	ДопПараметры.Вставить("Заголовки", Заголовки);
	
	ДанныеФайла = Новый Структура("file", ФайлСсылка.ХранилищеДД.Получить()); //Тут получаем двоичные данные
	
	Ответ = КоннекторHTTP.Post(АдресРесурса, ДанныеФайла, ДопПараметры);
Показать


Но чтото не выходит. Если делаю через postman указав в теге 'file' что это именно файл и выбрав его на диске - ответ приходит корректный.
Что я делаю не так?


РАЗОБРАЛСЯ.
227. PRoman 73 27.05.22 10:06 Сейчас в теме
Получаю POST работает.
GET - возвращает "Ошибка работы с Интернет: Failure when receiving data from the peer"


кто сталкивался с подобным? Запросы через "постман" работают нормально.
230. bonv 1625 30.05.22 15:56 Сейчас в теме
(227) Пример запроса можно увидеть?
234. PRoman 73 30.05.22 17:21 Сейчас в теме
(230)
Аутентификация = Новый Структура;
	Аутентификация.Вставить("Тип"							, "AWS4-HMAC-SHA256");
	Аутентификация.Вставить("ИдентификаторКлючаДоступа"		, СтруктураВыполненияОбмена.КлючДоступа);
	Аутентификация.Вставить("СекретныйКлюч"					, СтруктураВыполненияОбмена.СекретныйКлюч);
	Аутентификация.Вставить("Регион"						, СтруктураВыполненияОбмена.Регион);
	Аутентификация.Вставить("Сервис"						, "sqs");
	Аутентификация.Вставить("ИспользоватьАутентификациюОС"	, Истина);
	
	ДополнительныеПараметры = Новый Структура;
	ДополнительныеПараметры.Вставить("Аутентификация", Аутентификация);
				
	Данные = Новый Структура;
	Данные.Вставить("Action"				, "ReceiveMessage");            
		
	ФлагУспешности = Истина;
	ТекстОшибки = "";
	Ответ = КоннекторHTTP.get(СтруктураВыполненияОбмена.АдресОчереди,Данные , ДополнительныеПараметры);	
Показать
235. PRoman 73 01.06.22 15:39 Сейчас в теме
(234)
Решил проблему, случайно....
Что бы выполнить ГЕТ. Сразу посылаю ПОСТ, получаю ответ с ошибкой и далее ГЕТ - получаю результат
236. cosmo2004 38 06.06.22 09:42 Сейчас в теме
Какое тело у функции ИзвлечьExecution(Ответ) в примере "Работа в рамках сессии"?
237. cosmo2004 38 07.06.22 12:08 Сейчас в теме
(236) Нашел самостоятельно, но поздно, сначала написал свою похожую, также есть вариант реализации через ПостроительDOM

Функция ИзвлечьExecution(Ответ)
	
	HTML = КоннекторHTTP.КакТекст(Ответ);
	
	Начало = СтрНайти(HTML, "name=""execution""");
	Конец = СтрНайти(HTML, ">", НаправлениеПоиска.СНачала, Начало);
	КороткаяСтрока = Сред(HTML, Начало, Конец - Начало);
	
	Начало = СтрНайти(КороткаяСтрока, "value=""") + СтрДлина("value=""");
	Конец = СтрНайти(КороткаяСтрока, """", НаправлениеПоиска.СНачала, Начало); 
	
	Возврат Сред(КороткаяСтрока, Начало, Конец - Начало);
	
КонецФункции
Показать
238. suepifanov 1328 30.06.22 15:41 Сейчас в теме
Не работает авторизация AWS4-HMAC-SHA256 в мобильной платформе, кто сталкивался?
На стационарной платформе все ок, на смартфоне ошибка:

"The request signature we calculated does not match the signature you provided. Check your AWS secret access key and signing method. For more information, see REST Authentication and SOAP Authentication for details."
239. suepifanov 1328 30.06.22 18:25 Сейчас в теме
(238) поправочка - не работает на iOS, на андроиде все в порядке.
240. Hitcher 184 02.07.22 13:15 Сейчас в теме
Мне кажется или ошибка в функции ОтправитьЗапрос ?

В цикле забыто начальное заполнение переменной ОшибкаВыполненияЗапроса

В тексте есть такая конструкция. Если запрос не выполнился, то заполняется ОшибкаВыполненияЗапроса и если задан повтор запроса, то он повторяется.

	Пока Истина Цикл

                ОшибкаВыполненияЗапроса  = Неопределено; // Здесь ошибка.Не хватает вот этой строки

		Попытка
			Ответ = ОтправитьHTTPЗапрос(Сессия, ПодготовленныйЗапрос, Настройки);
		Исключение
			ОшибкаВыполненияЗапроса = ИнформацияОбОшибке();
		КонецПопытки;

		Повтор = Повтор + 1;
		Длительность = (ТекущаяУниверсальнаяДатаВМиллисекундах() - Начало) / МиллисекундВСекунде;

		Если Не НеобходимоПовторитьЗапрос(Ответ, Настройки, ОшибкаВыполненияЗапроса) Тогда
			Прервать;
		КонецЕсли;

       КонецЦикла;
Показать

Допустим, следующий запрос выполнился. Ответ 200, все хорошо. Но в в функции НеобходимоПовторитьЗапрос стоит такая проверка
	Если ОшибкаВыполненияЗапроса <> Неопределено Тогда
		Возврат Истина;
	КонецЕсли;

А ОшибкаВыполненияЗапроса у нас заполнилось на предыдущем неудачном шаге и алгоритм вместо того чтобы прекратить проверку, вырабатывает все попытки и отваливается с первоначальной ошибкой.
241. IntelegentPro 14.07.22 12:12 Сейчас в теме
Добрый день!
У меня на проде используется какая-то из сборок коннектора, есть проблема когда значения get параметров не латинские буквы, например FirstName = ИВАН, есть строки в модуле:

ЗначениеПараметра = КодироватьСтроку(Значение, СпособКодированияСтроки.URLВКодировкеURL);
ЧастиПараметрыЗапроса.Добавить(СтрШаблон("%1=%2", Параметр.Ключ, ЗначениеПараметра));

первая строчка кодирует в url utf-8, все хорошо. А вот вторая преобразовывает кодированную строку до не узнаваемости, хотя насколько я понимаю во второй строке просто идет преобразование параметров из структуры в строку через =
242. Mark72 16.08.22 14:45 Сейчас в теме
Спасибо, классный коннектор
243. Pryanishnikov_Vladimir 09.09.22 12:30 Сейчас в теме
Почему часть функционала сериализации/десериализации JSON не используется? Надо бы добавить.

Функция JsonВОбъект(Json, Кодировка = "utf-8", ПараметрыПреобразования = Неопределено) Экспорт
	
	ПараметрыПреобразованияJSON = ДополнитьПараметрыПреобразованияJSON(ПараметрыПреобразования);
		
	ЧтениеJSON = Новый ЧтениеJSON;
	Если ТипЗнч(Json) = Тип("ДвоичныеДанные") Тогда
		ЧтениеJSON.ОткрытьПоток(Json.ОткрытьПотокДляЧтения(), Кодировка);
	ИначеЕсли ТипЗнч(Json) = Тип("Строка") Тогда
		ЧтениеJSON.УстановитьСтроку(Json);
	Иначе
		ЧтениеJSON.ОткрытьПоток(Json, Кодировка);
	КонецЕсли; 		
	
	Объект = ПрочитатьJSON(
	ЧтениеJSON, 
	ПараметрыПреобразованияJSON.ПрочитатьВСоответствие,
	ПараметрыПреобразованияJSON.ИменаСвойствСоЗначениямиДата,
	ПараметрыПреобразованияJSON.ФорматДатыJSON,
	//VP+
	ПараметрыПреобразованияJSON.ИмяФункцииВосстановления,   
	ПараметрыПреобразованияJSON.МодульФункцииВосстановления,
	ПараметрыПреобразованияJSON.ДополнительныеПараметрыФункцииВосстановления,
	ПараметрыПреобразованияJSON.ИменаСвойствДляОбработкиВосстановления);
	//VP-
	ЧтениеJSON.Закрыть();
	
	Возврат Объект;

КонецФункции 
Показать


Функция ПараметрыПреобразованияJSONПоУмолчанию()
	
	ПараметрыПреобразованияПоУмолчанию = Новый Структура;
	ПараметрыПреобразованияПоУмолчанию.Вставить("ПрочитатьВСоответствие", Истина);
	ПараметрыПреобразованияПоУмолчанию.Вставить("ФорматДатыJSON", ФорматДатыJSON.ISO);
	ПараметрыПреобразованияПоУмолчанию.Вставить("ИменаСвойствСоЗначениямиДата", Неопределено); 
	//VP+
	ПараметрыПреобразованияПоУмолчанию.Вставить("ИмяФункцииВосстановления", Неопределено);
	ПараметрыПреобразованияПоУмолчанию.Вставить("МодульФункцииВосстановления", Неопределено);
	ПараметрыПреобразованияПоУмолчанию.Вставить("ДополнительныеПараметрыФункцииВосстановления", Неопределено);
	ПараметрыПреобразованияПоУмолчанию.Вставить("ИменаСвойствДляОбработкиВосстановления", Неопределено);
	//VP-                                                                                         
	
	Возврат ПараметрыПреобразованияПоУмолчанию;
	
КонецФункции
Показать
253. bonv 1625 04.03.23 18:52 Сейчас в теме
(243) В актуальной версии все есть
269. Pryanishnikov_Vladimir 09.08.23 12:05 Сейчас в теме
(253)А где взять акутальную верисю? На гите вроде все таже лежит от 11 мая 2020г.
Продолжение развития будет? Было бы круто увидеть Клиентский модуль с поддержкой ассинхронных вызовов HTTP
270. bonv 1625 09.08.23 14:15 Сейчас в теме
(269) Релиз в виде готовой конфигурации давно не выпускался.

Можно взять самую актуальную версию, скопировав общий модуль
https://github.com/vbondarevsky/Connector/blob/master/src/ru/CommonModules/­%D0%9A%D0%BE%D0%BD%D0%BD%D0%B5%D0%BA%D1%82%D0%BE%D1%80HTTP/E­xt/Module.bsl

> Продолжение развития будет? Было бы круто увидеть Клиентский модуль с поддержкой ассинхронных вызовов HTTP
Можно писать в issue на github'е пожелания/вопросы
271. SagittariusA 18.10.23 11:59 Сейчас в теме
(270)
Можно взять самую актуальную версию, скопировав общий модуль

Думаю данную информацию нужно бы указать в ReadMe на GitHub. Так как это не очевидно.
244. shaykhelov 27.09.22 12:53 Сейчас в теме
приветствую!

Уточните момент с инициализацией дополнительных параметров. Например необходимо отправить более одного POST запроса на один и тот же ресурс с измененными данными в цикле:

Заголовки = Новый Соответствие;
Заголовки.Вставить("Content-Type", "application/json");

Аутентификация = Новый Структура;
Аутентификация.Вставить("Пользователь", "test");
Аутентификация.Вставить("Пароль", "test");

ПараметрыПреобразованияJSON = Новый Структура;
ПараметрыПреобразованияJSON.Вставить("ПрочитатьВСоответствие", Ложь);

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

ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Заголовки", Заголовки);
ДополнительныеПараметры.Вставить("Аутентификация", Аутентификация);
ДополнительныеПараметры.Вставить("ПараметрыПреобразованияJSON", ПараметрыПреобразованияJSON);
ДополнительныеПараметры.Вставить("ПараметрыЗаписиJSON", ПараметрыЗаписиJSON);

Для Счетчик = 1 По 5 Цикл
	
	СтруктураДанных = Новый Структура("id", Счетчик);
	Ответ = КоннекторHTTP.PostJson("https://infostart.ru/", СтруктураДанных, ДополнительныеПараметры);
	
КонецЦикла;
Показать


Во второй итерации в ДополнительныеПараметры.Данные остается первое значение {"id":1} и для отправки используется оно. Неужели для каждой итерации необходимо удалять свойство ДополнительныеПараметры.Данные для повторной загрузке данных в ЗаполнитьДополнительныеДанные() ?
247. Sergafan10 30.11.22 09:48 Сейчас в теме
(244) сейчас с таким же столкнулся, в цикле отправлял так

ДополнительныеПараметры.Данные = Новый ДвоичныеДанные(Файл.ПолноеИмя);
Ответ = КоннекторHTTP.Put("https://mystorage.storage.yandexcloud.net/" + Файл.Имя, Неопределено, ДополнительныеПараметры);
252. bonv 1625 04.03.23 18:51 Сейчас в теме
(244) В актуальной версии такой проблемы не должно быть
245. avbolshakov 30.10.22 12:13 Сейчас в теме
Может уже спрашивали (я не нашёл) - если работаешь с odata и нужен фильтр (он же параметр) и он задается со знаком доллара ($format=json), то метод PostJson ругается как раз на этот доллар. Никак это обойти нельзя?
251. bonv 1625 04.03.23 18:49 Сейчас в теме
(245) Можно увидеть пример вызова?
256. avbolshakov 06.03.23 07:46 Сейчас в теме
(251)
С тем, чтобы через odata получать в джейсоне - разобрался, невнимательно читал документацию. это параметр надо в заголовках передавать.
Но все таки есть ситуации что нужно в строке запроса передавать параметры.
Например, get запрос

Результат = КоннекторHttp.GetJson("http://127.0.0.1/basename/odata/standard.odata/Catalog_ФизическиеЛица(guid'910d4030-1234-11e6-80c6-8038bc045e37')?$select=*____Presentation")
246. terminalshik 15.11.22 11:53 Сейчас в теме
Добрый день!
Никак не могу победить отправку данных формы на один сайт.
Тестирую через Postman, там всё ок. А через 1С возвращает код 500.

Картинку с postman прилагаю. Так заголовки и тело запроса.

Не работающий код в 1С ниже:
	// Заголовки
	Заголовки = Новый Соответствие;
	Заголовки.Вставить("accept-encoding", "gzip, deflate, br");
	Заголовки.Вставить("cookie", "PHPSESSID=4b*******************u2");
	Заголовки.Вставить("content-type", "multipart/form-data; boundary=----WebKitFormBoundary1tABMKavlQpONwZj");
	
	// Данные формы
	Данные = Новый Структура;
	Данные.Вставить("parent_course_id", 28);
	Данные.Вставить("action", "course");
	Данные.Вставить("edit_name_parent_course", "Новое название!!");
	
	Ответ = Коннектор.Post("https://np*******f.com/admin/action.php", , Новый Структура("Заголовки, Данные", Заголовки, Данные));	
Показать


Пробовал данные вставлять отдельно вторым параметром в функцию Post, результат тот же.

Помогите пожалуйста найти ошибку
Прикрепленные файлы:
248. romzat 15 11.12.22 14:35 Сейчас в теме
Добрый день. Столкнулся с проблемой при попытке использования примера для работы с S3 хранилищем:
....
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Заголовки", Заголовки);
ДополнительныеПараметры.Вставить("Аутентификация", Аутентификация);
ДополнительныеПараметры.Вставить("Таймаут", 300);

Ответ = КоннекторHTTP.Put("https://test.storage.yandexcloud.net/my_file.txt", Файл, ДополнительныеПараметры);

В функции put сначала формируются параметры по-умолчанию, а потом добавляются дополнительные параметры, которые мы передали
Функция Put(URL, Данные = Неопределено, ДополнительныеПараметры = Неопределено, Сессия = Неопределено) Экспорт

ТекущаяСессия = ТекущаяСессия(Сессия);

Параметры = НовыеПараметры();
Дополнить(Параметры, ПараметрыИзАргументов(Неопределено, Данные, Неопределено));
Дополнить(Параметры, ДополнительныеПараметры);

Возврат ВызватьHTTPМетод(ТекущаяСессия, "PUT", URL, Параметры);

КонецФункции


Функция Дополнить работает не совсем корректно: она проверяет, если в наших стандартных параметрах уже есть параметр с наименованием из дополнительных параметров, то имеющийся параметр никак не обновляется.
Мы же формируем доп. параметр с именем "Аутентификация", а такой параметр уже есть, он не обновляется и при в итоге наши параметры авторизации игнорируются.

Пока поправил у себя функцию таким образом:
Процедура Дополнить(Приемник, Источник)

Если Источник = Неопределено Тогда
Возврат;
КонецЕсли;

Для Каждого ЭлементИсточника Из Источник Цикл
ПараметрНайден = Ложь;

Если ТипЗнч(Приемник) = Тип("Соответствие") Тогда
ПараметрНайден = Приемник.Получить(ЭлементИсточника.Ключ) <> Неопределено;
КонецЕсли;

Если ТипЗнч(Приемник) = Тип("Структура") Тогда
ПараметрНайден = Приемник.Свойство(ЭлементИсточника.Ключ);
КонецЕсли;

Если НЕ ПараметрНайден ИЛИ (ЭлементИсточника.Ключ = "Аутентификация" ИЛИ ЭлементИсточника.Ключ = "Заголовки") Тогда
Приемник.Вставить(ЭлементИсточника.Ключ, ЭлементИсточника.Значение);
КонецЕсли;
КонецЦикла;

КонецПроцедуры
249. user1803779 04.03.23 14:35 Сейчас в теме
Странно , но не смог разложить несложный json в структуру , в ответе преобразовал в текст , убрав пару символов кавычек квадратных "["
Запросы одинаковые , ответ в 1с через расширение
{
"group": null,
"id": 1,
"ip": "192.168.8.100",
"name": "1",
"reconnect_type": "time_link",
"type": "Huawei E3372h-153",
"conn_dev": true,
"reconnect_end_hum": "8 минут назад",
"ifname": "enp0s20f0u2u1u1",
"reconnect_min": 20,
"active": true,
"gateway": "192.168.8.1",
"is_osfp": true,
"rsrq": "-8dB",
"conn_net": true,
"conn_inet": false,
"reconnect": false,
"rssi": "-77dBm",
"reconnect_interval": 500,
"reconnect_start": "04 мар 2023 14:20:16",
"reconnect_end": "04 мар 2023 14:20:22",
"signal": 2,
"rsrp": "-106dBm",
"sinr": "2dB",
"operator": "MegaFon RUS",
"osfp": {
"id": 7,
"name": "SP3",
"modem": "Windows"
},
"network_type": "LTE",
"reconect_time": 7,
"external_ip": null,
"net_mode": "lte",
"monitoring_interval": 3,
"real_band": [
"B1",
"B3",
"B7",
"B8",
"B20"

}
]

ответ через постмана

[{"id":1,"name":"1","type":"Huawei E3372h-153","active":true,"ifname":"enp0s20f0u2u1u1","ip":"192.168.8.100","gateway":"192.168.8.1","conn_dev":true,"is_osfp":true,"conn_net":true,"conn_inet":false,"reconnect":false,"reconnect_type":"time_link","reconnect_interval":500,"reconnect_min":20,"reconnect_start":"04 мар 2023 14:20:16","reconnect_end":"04 мар 2023 14:20:22","reconnect_end_hum":"2 минуты назад","signal":2,"rsrq":"-9dB","rsrp":"-107dBm","rssi":"-77dBm","sinr":"1dB","osfp":{"id":7,"name":"SP3","modem":"Windows"},"operator":"MegaFon RUS","network_type":"LTE","reconect_time":388,"external_ip":null,"net_mode":"lte","monitoring_interval":3,"group":null,"real_band":["B1","B3","B7","B8","B20"]}]


Есть у кого-то идеи почему ?)
250. bonv 1625 04.03.23 18:47 Сейчас в теме
(249) Можно увидеть код вызова?
254. user1803779 05.03.23 11:11 Сейчас в теме
(250)
Пробовал разные форматы , один из , также отправлял просто post(боди отсуствует) и postjson , приходит абсолютно также.
Есть ли возможность указать не пробовать сериализировать ответ ?

 ЗаголовокАвторизации = "Token "+Ключ;



Заголовки = Новый Соответствие;
Заголовки.Вставить("Authorization", ЗаголовокАвторизации);


Ответ = КоннекторHTTP.getjson("http://192.168.88.166:8000/api/devices/modem/list",,Новый Структура("Заголовки", Заголовки));
Показать
Прикрепленные файлы:
255. user1803779 05.03.23 12:46 Сейчас в теме
(254)
Вопрос снимаю , провалился дебагом , это модуль телеграмм для 1С пробует преобразовать прилетающий массив в json , и делает это кривовато. В дебаге ответ - массив , в нем соответствие , в соответствии все четенько.
Спасибо)
257. antonio_i 81 24.03.23 11:46 Сейчас в теме
Благодарю за удобную библиотеку.
*Сам ломал голову, как передать сжатые данные. А тут оно бонусом есть :)
258. Aleskey_K 38 03.04.23 10:36 Сейчас в теме
Встречались ли вам ситуации, когда приходит два ответа?
1с упорно ловит ответ 404, хотя в браузере отображается второй ответ 200 с содержимым JSON.
Проверял через Postman, Curl, они все ловят нормальный ответ с содержимым, а 1с нет.
Пробовал вызывать несколько раз метод, использовал GET и POST, подставлял различные заголовки.
Попробовал с использованием вашего модуля.

Разработчику сервиса сообщили, но решения ждать можно долго.

Подскажите, как можно обойти данную проблему?
Прикрепленные файлы:
259. markers 279 03.04.23 11:18 Сейчас в теме
(258)Вы бы лучше показали заголовки и тело ответа в 1С. То что в браузере вторым запросом идет получение favicon, может не иметь отношения к вашей проблеме. Просто браузер видимо пытается получить иконку сайта. Ещё стоит попробовать посмотреть через Charles что происходит.
260. Aleskey_K 38 03.04.23 11:37 Сейчас в теме
(259) 1с как раз ловит первый html, который видно на первой картинке.

Charles - это веб-прокси? https://www.charlesproxy.com/

Добавлю скриншотов из 1с.
Прикрепленные файлы:
261. markers 279 03.04.23 11:57 Сейчас в теме
(260) Так у вас и текст ошибок разный.
Тут пишет что вы делаете запрос к /payment/rest/, а в сообщении (258) обращение идет на ...rest/register.do
262. Aleskey_K 38 03.04.23 18:20 Сейчас в теме
(261) путь один, запрос один, скриншоты сделаны с двух ответов.
263. markers 279 03.04.23 18:29 Сейчас в теме
(262) Посмотрите внимательно, при работе в консоли браузера, у вас адрес .../rest/register.do?order... А на тех скринах, что вы сделали из 1С, у вас адрес .../rest/?order... Т.е. вы походу пропустили register.do. Или покажите скрин с концовкой адреса запроса в 1С.
Прикрепленные файлы:
Aleskey_K; +1 – Ответить
264. Aleskey_K 38 03.04.23 18:33 Сейчас в теме
(263) проверю, благодарю за внимательность
265. markers 279 03.04.23 18:39 Сейчас в теме
(264) + если верить странице сайта сбера в архив.орг, то register.do обязательно должен быть указан. Т.е. при вызове папки ../rest/ не происходит автоматического переброса на ../rest/register.do как это обычно происходит при входе на сайт primer.ru фактически может открываться primer.ru/index.html
Aleskey_K; +1 – Ответить
266. Aleskey_K 38 04.04.23 09:44 Сейчас в теме
(265) Всё круто сработало, спасибо. Догадываюсь, что секрет в заголовках запроса.
267. user1358728 08.06.23 17:43 Сейчас в теме
Здравствуйте! Подскажите, как с помощью Connector-а сделать подобный запрос:
curl -u identifier:secret \
-H "Content-Type: application/json; charset=utf-8" \
-X POST \
-d '{"response": {"payload": {"data": 111}}}' \
https://nekiy_server.ru/api/v1/services/incomings/13/responses


Делаю так

СтруктураPayload = Новый Структура;
СтруктураPayload .Вставить("data", 111);

СтруктураResponse = Новый Структура;
СтруктураResponse.Вставить("payload", СтруктураPayload);

СтруктураОтвета = Новый Структура;
СтруктураОтвета.Вставить("response", СтруктураResponse);

ПараметрыПреобразованияJSON = Новый Структура("ПрочитатьВСоответствие", Ложь);
МассивПолейСТипомДата = ВернутьПоляДляПреобразованияВДату();
ПараметрыПреобразованияJSON.Вставить("ИменаСвойствСоЗначениямиДата", МассивПолейСТипомДата);

Аутентификация = Новый Структура("Пользователь, Пароль", "некий_user", "некий_password");
Заголовки = Новый Соответствие;
Заголовки.Вставить("Content-Type", "application/json; charset=utf-8");

ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Аутентификация", Аутентификация);
ДополнительныеПараметры.Вставить("ПараметрыПреобразованияJSON", ПараметрыПреобразованияJSON);
ДополнительныеПараметры.Вставить("Заголовки", Заголовки);

Json = БОНД_Коннектор.ОбъектВJson(СтруктураОтвета, ПараметрыПреобразованияJSON);

Результат = БОНД_Коннектор.PostJson("https://nekiy_server.ru/api/v1/services/incomings/13/responses", Json, ДополнительныеПараметры);

Верно ли я делаю?
296. SpaceOfMyHead 203 25.07.25 19:02 Сейчас в теме
(267) Если до сих пор у вас не получилось, расскажу, как это сделать в другом инструменте - HTTP-клиенте. В интерактивном режиме, открыв обработку "Консоль HTTP-клиента", вы можете транслировать строку команды curl в код 1С. Например, вашу строку

curl -u identifier:secret --basic \
-H "Content-Type: application/json; charset=utf-8" \
-X POST \
-d '{"response": {"payload": {"data": 111}}}' \
https://nekiy_server.ru/api/v1/services/incomings/13/responses


Консоль транслирует в

ИдентификаторРесурса = "https://nekiy_server.ru/api/v1/services/incomings/13/responses";
ДополнительныеПараметры = КлиентHTTPКлиентСервер.НовыеДополнительныеПараметры();
ТелоЗапросаТекст = "{""response"": {""payload"": {""data"": 111}}}";

Ответ = Ждать КлиентHTTPКлиентСервер
	.УстановитьЗаголовок(ДополнительныеПараметры, "Content-Type", "application/json; charset=utf-8")
	.УстановитьBasicАвторизацию(ДополнительныеПараметры, "identifier", "***")
	.ОтправитьТекст(ИдентификаторРесурса, ТелоЗапросаТекст, ДополнительныеПараметры);


Если в "Ответ" требуется сразу получить структуру или соответствие (дессериализованный JSON), воспользуйтесь функцией "ТелоОтветаКакJSON".

Кстати, вашу строку curl я чуть-чуть изменил, добавив флаг "--basic" - особенность Клиента, но если это вам кажется критичным, буду рад вашему Pull реквесту. Либо однажды когда руки дойдут - поправлю.
268. MovaRemi 31.07.23 12:59 Сейчас в теме
Здравствуйте! Коннектор умеет работать с JWT-токенами?
272. AntonMN 14.12.23 14:36 Сейчас в теме
Добрый день! При использовании функции GET и AWS4-HMAC-SHA256 аутентификации на платформе 8.3.17... все отлично работает. Начиная с 8.3.18... приходит ответ с 408 ошибкой. Можете подсказать в чем проблема?
273. romanstor 15.01.24 10:27 Сейчас в теме
Добрый день.
При пустом ответе со статусом 200 не проверяется длина ответа. Раньше это относилось и к КакJason, но в более поздних версиях баг был исправлен, хотя, проверка на пустой ответ пока отсутствует и в КакТекст, и остальных функциях. Будет ли фикс в следующих версиях?
Пока дописаны свои проверки...
Спасибо за Коннектор!
274. alex25ru 24.01.24 07:11 Сейчас в теме
Добрый день, интересует возможность задания user-agent.
275. markers 279 24.01.24 07:16 Сейчас в теме
(274) Это же обычный заголовок, просто добавляете его в соответствие заголовков, например так:
Заголовки = Новый Соответствие;
Заголовки.Вставить("user-agent", "Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36");


Ответ = КоннекторHTTP.getjson("адрес",,Новый Структура("Заголовки", Заголовки));
276. alex25ru 24.01.24 07:49 Сейчас в теме
(275) Спасибо, да, все так, сам затупил.

Мне вот больше интересно стало, параметры прокси и заголовки выставленные вручную в рамках одной сессии "не проходят", так и должно быть?
277. user1470785 27.02.24 16:16 Сейчас в теме
Кто-нибудь пробовал это Бром (Brom)?
Бром (Brom) - это интеграционная компонента, которая предоставляет программный интерфейс взаимодействия (API) с информационными системами на базе 1С:Предприятие

https://web.archive.org/web/20220704145703/https://itworks.group/products/brom/

По моему, очень интересная вещь
278. beland 05.03.24 12:10 Сейчас в теме
а как/куда нужно упаковать двоичные данные, которые возвращает ЗаписатьGZip, чтобы их принимал бы за гзип любой сторонний сервис?..
например кодируем строку "test"
ЗаписатьGZip возвращает
1F 8B 08 00 00 00 00 00 00 FF 74 65 73 74 0C 7E 7F D8 04 00 00 00
если упаковать в base64 получаем
H4sIAAAAAAAA/3Rlc3QMfn/YBAAAAA==

но онлайн-сервис потом эти данные считает некорректными.
кодированную другим онлайн сервисом строку
H4sIAAAAAAAAAypJLS4BAAAA//8DAAx+f9gEAAAA
воспринимает же нормально и раскодирует как
test
279. user1251417 08.05.24 15:55 Сейчас в теме
Доброго. Возможно кто-то подскажет , как передать структуру вида

input_data= {
"request": {
"subject": "Unable to fetch mails",
"description": "I am unable to fetch mails from the mail server",
"requester": {
"id": "4",
"name": "administrator"
},
"impact_details": "Routine tasks are pending due to mail server problem",
"resolution": {
"content": "Mail Fetching Server problem has been fixed"
},
"status": {
"name": "Open"
}
}
}


Момент именно с параметром input_data= , те получается параметр , а в нем json
Напихать структур по типу
Данные = Новый Структура;
Данные.Вставить("input_data", request);

Не получается , ошибка парсинга . Через postman отрабатывает вот так
Прикрепленные файлы:
280. markers 279 09.05.24 07:12 Сейчас в теме
(279) Вы же как форму передаете? Получаемый JSON у вас совпадает с ожидаемым?
281. user1251417 09.05.24 09:02 Сейчас в теме
(280)

Пробовал и обычный post и postjson на всякий случай , структура получается корректная в отладке.
Не понял что ему не нравится , запихнул все в body, отработало

body = "
|{
| 'request': {
| 'subject':"+Тема+",
| 'description':"+Описание+",
| 'requester': {
| 'id': '18911',
| 'name': 'telegramBot'
| },
| 'status': {
| 'name': 'Открыто'
| },
| 'urgency': {
| 'name': "+Срочность+"
| },
| 'udf_fields': {
| 'udf_sline_301': 'high priority'
| },
| 'category': {
| 'name': "+Категория+"
| },
| 'subcategory': {
| 'name': "+Подкатегория+"
| },
| 'site': {
| 'name': "+Ресторан+"
| }
|
|
| }
|}";

ДанныеГотовые.Вставить("input_data", body);
282. markbraer 128 13.07.24 09:37 Сейчас в теме
Отличный проект. Можно ли его использовать в составе коммерческих продуктов (конфигураций и расширений)? Лицензия это позволяет?
283. bonv 1625 14.07.24 01:22 Сейчас в теме
(282) использовать можно. Главное преамбулу с лицензией в модуле не удалять
Student1C; +1 – Ответить
284. user1338509 09.08.24 06:43 Сейчас в теме
К сожалению не работает Digest авторизация для регистратора Dahua, просто превышает таймаут, с Postman и браузера открывается. Уже пару дней пытаюсь победить, все тчетно.
285. AntonMN 12.09.24 09:52 Сейчас в теме
(272) Частично нашел ответ на свой вопрос. Начиная с 8.3.18... платформы при отправке HTTP запроса передается заголовок Expect со значением 100-continue. Сервер, на который я посылаю этот запрос не понимает этот заголовок. Решил проблему через скрипт на curl, передаю данные аутентификации в curl, отправляю от туда запрос, получаю ответ и передаю его обратно в 1С. Может кто ни будь подскажет решение проблемы только средствами 1С? Заранее благодарен!
286. markers 279 12.09.24 10:20 Сейчас в теме
(285) Чисто для общего развития и понимания. Судя по информации найденной на просторах, данный заголовок передается только когда есть нужда передать большой объём данных и чтоб его не передавать сразу - клиент передает только заголовки для оценки сервером и только если сервер не видит проблем - передается уже полный запрос. В вашем же случае используется GET запрос, вряд-ли он может быть большим. Ну и может, вы пробовали сами установить заголовок этот в какое-то другое значение (хотя стандарт не подразумевает других вариантов)? Возможно 1С не будет заменять его своим и отправит данные сразу?
Ещё (в теории) может может помочь
HTTPСоединение.ПолучитьЗаголовки(HTTPЗапрос);
перед передачей запроса
287. AntonMN 12.09.24 11:01 Сейчас в теме
(286)
HTTPСоединение.ПолучитьЗаголовки(HTTPЗапрос);
Это к сожалению не помогло. Заголовок Expect я не добавляю самостоятельно. Проследив отправку запроса через HTTP Debugger выяснил, что в платформе 8.3.17 его нет при отправке и все работает. Запускаю 8.3.18 или более свежую и появляется заголовок в запросе и 408 ошибка в ответе
288. markers 279 12.09.24 11:03 Сейчас в теме
(287) Да, я понимаю что вы его не ставите, но что если попробовать намеренно его поставить в какое-то другое значение, например в 200-OK (я понимаю что в стандарте этого нет). Просто по опыту, заголовки переданные запросу, имеют более высокий приоритет.
289. AntonMN 12.09.24 11:23 Сейчас в теме
(288) К сожалению значение заголовка Expect отличное от 100-continue возвращает в результате 417 ошибку, если ставлю null опять 408. Насколько я понял это связано с HTTP/1.1 вместо HTTP/1.0 на 17 платформе
290. markers 279 12.09.24 11:27 Сейчас в теме
(289) Эх, жаль. Спасибо за информацию! Тогда вам стоит написать в 1С, чтобы предусмотрели возможность отключения этой функции.
291. kep81@mail.ru 28.11.24 14:13 Сейчас в теме
(284)
К сожалению не работает Digest авторизация для регистратора Dahua, просто превышает таймаут, с Postman и браузера открывается. Уже пару дней пытаюсь победить, все тчетно.
+
У вас чт-нибудь получилось сделать решить проблему с авторизацией Digest?
292. alex_krivonogov 02.02.25 11:06 Сейчас в теме
Добрый день! Не подскажите, у меня тоже не работает Digest авторизация. Выходит ошибка "переполнение стека встроенного языка на сервере". Пробовал специально на разных платформах и конфигурациях. Через браузер или php работает, соединяется. Причем и Get и GetJSON пробовал.
Ошибка такая :

[ОшибкаВоВремяВыполненияВстроенногоЯзыка]
по причине:
Переполнение стека встроенного языка на сервере
по причине:

ВнешняяОбработка.ОбменАСБ.Форма.Форма1.Форма : 14 : Результат = КоннекторHTTP.GetJson(
ОбщийМодуль.КоннекторHTTP.Модуль : 277 : Возврат КакJson(ВызватьHTTPМетод(ТекущаяСессия, "GET", URL, Параметры), ПараметрыПреобразованияJSON);
ОбщийМодуль.КоннекторHTTP.Модуль : 1290 : Ответ = ОтправитьЗапрос(Сессия, ПодготовленныйЗапрос, НастройкиПодключения);
ОбщийМодуль.КоннекторHTTP.Модуль : 1576 : Ответ = ОтправитьHTTPЗапрос(Сессия, ПодготовленныйЗапрос, Настройки);
ОбщийМодуль.КоннекторHTTP.Модуль : 1655 : ОбработкаОтветаСКодом401(Сессия, ПодготовленныйЗапрос, Настройки, Ответ);
ОбщийМодуль.КоннекторHTTP.Модуль : 1772 : Ответ = ОтправитьHTTPЗапрос(Сессия, ПодготовленныйЗапрос, Настройки);
ОбщийМодуль.КоннекторHTTP.Модуль : 1655 : ОбработкаОтветаСКодом401(Сессия, ПодготовленныйЗапрос, Настройки, Ответ);
ОбщийМодуль.КоннекторHTTP.Модуль : 1772 : Ответ = ОтправитьHTTPЗапрос(Сессия, ПодготовленныйЗапрос, Настройки);
ОбщийМодуль.КоннекторHTTP.Модуль : 1655 : ОбработкаОтветаСКодом401(Сессия, ПодготовленныйЗапрос, Настройки, Ответ);
ОбщийМодуль.КоннекторHTTP.Модуль : 1772 : Ответ = ОтправитьHTTPЗапрос(Сессия, ПодготовленныйЗапрос, Настройки);
ОбщийМодуль.КоннекторHTTP.Модуль : 1655 : ОбработкаОтветаСКодом401(Сессия, ПодготовленныйЗапрос, Настройки, Ответ);
ОбщийМодуль.КоннекторHTTP.Модуль : 1772 : Ответ = ОтправитьHTTPЗапрос(Сессия, ПодготовленныйЗапрос, Настройки);
ОбщийМодуль.КоннекторHTTP.Модуль : 1655 : ОбработкаОтветаСКодом401(Сессия, ПодготовленныйЗапрос, Настройки, Ответ);
ОбщийМодуль.КоннекторHTTP.Модуль : 1772 : Ответ = ОтправитьHTTPЗапрос(Сессия, ПодготовленныйЗапрос, Настройки);
ОбщийМодуль.КоннекторHTTP.Модуль : 1655 : ОбработкаОтветаСКодом401(Сессия, ПодготовленныйЗапрос, Настройки, Ответ);
ОбщийМодуль.КоннекторHTTP.Модуль : 1772 : Ответ = ОтправитьHTTPЗапрос(Сессия, ПодготовленныйЗапрос, Настройки);
ОбщийМодуль.КоннекторHTTP.Модуль : 1655 : ОбработкаОтветаСКодом401(Сессия, ПодготовленныйЗапрос, Настройки, Ответ);
ОбщийМодуль.КоннекторHTTP.Модуль : 1772 : Ответ = ОтправитьHTTPЗапрос(Сессия, ПодготовленныйЗапрос, Настройки);
ОбщийМодуль.КоннекторHTTP.Модуль : 1655 : ОбработкаОтветаСКодом401(Сессия, ПодготовленныйЗапрос, Настройки, Ответ);
ОбщийМодуль.КоннекторHTTP.Модуль : 1772 : Ответ = ОтправитьHTTPЗапрос(Сессия, ПодготовленныйЗапрос, Настройки);
ОбщийМодуль.КоннекторHTTP.Модуль : 1655 : ОбработкаОтветаСКодом401(Сессия, ПодготовленныйЗапрос, Настройки, Ответ);
ОбщийМодуль.КоннекторHTTP.Модуль : 1772 : Ответ = ОтправитьHTTPЗапрос(Сессия, ПодготовленныйЗапрос, Настройки);
ОбщийМодуль.КоннекторHTTP.Модуль : 1655 : ОбработкаОтветаСКодом401(Сессия, ПодготовленныйЗапрос, Настройки, Ответ);
ОбщийМодуль.КоннекторHTTP.Модуль : 1772 : Ответ = ОтправитьHTTPЗапрос(Сессия, ПодготовленныйЗапрос, Настройки);
ОбщийМодуль.КоннекторHTTP.Модуль : 1655 : ОбработкаОтветаСКодом401(Сессия, ПодготовленныйЗапрос, Настройки, Ответ);
ОбщийМодуль.КоннекторHTTP.Модуль : 1772 : Ответ = ОтправитьHTTPЗапрос(Сессия, ПодготовленныйЗапрос, Настройки);
ОбщийМодуль.КоннекторHTTP.Модуль : 1655 : ОбработкаОтветаСКодом401(Сессия, ПодготовленныйЗапрос, Настройки, Ответ);
ОбщийМодуль.КоннекторHTTP.Модуль : 1772 : Ответ = ОтправитьHTTPЗапрос(Сессия, ПодготовленныйЗапрос, Настройки);
ОбщийМодуль.КоннекторHTTP.Модуль : 1655 : ОбработкаОтветаСКодом401(Сессия, ПодготовленныйЗапрос, Настройки, Ответ);
ОбщийМодуль.КоннекторHTTP.Модуль : 1772 : Ответ = ОтправитьHTTPЗапрос(Сессия, ПодготовленныйЗапрос, Настройки);
ОбщийМодуль.КоннекторHTTP.Модуль : 1655 : ОбработкаОтветаСКодом401(Сессия, ПодготовленныйЗапрос, Настройки, Ответ);
ОбщийМодуль.КоннекторHTTP.Модуль : 1772 : Ответ = ОтправитьHTTPЗапрос(Сессия, ПодготовленныйЗапрос, Настройки);
...
ОбщийМодуль.КоннекторHTTP.Модуль : 1772 : Ответ = ОтправитьHTTPЗапрос(Сессия, ПодготовленныйЗапрос, Настройки);
ОбщийМодуль.КоннекторHTTP.Модуль : 1655 : ОбработкаОтветаСКодом401(Сессия, ПодготовленныйЗапрос, Настройки, Ответ);
ОбщийМодуль.КоннекторHTTP.Модуль : 1772 : Ответ = ОтправитьHTTPЗапрос(Сессия, ПодготовленныйЗапрос, Настройки);
ОбщийМодуль.КоннекторHTTP.Модуль : 1655 : ОбработкаОтветаСКодом401(Сессия, ПодготовленныйЗапрос, Настройки, Ответ);
ОбщийМодуль.КоннекторHTTP.Модуль : 1772 : Ответ = ОтправитьHTTPЗапрос(Сессия, ПодготовленныйЗапрос, Настройки);
ОбщийМодуль.КоннекторHTTP.Модуль : 1655 : ОбработкаОтветаСКодом401(Сессия, ПодготовленныйЗапрос, Настройки, Ответ);
ОбщийМодуль.КоннекторHTTP.Модуль : 1772 : Ответ = ОтправитьHTTPЗапрос(Сессия, ПодготовленныйЗапрос, Настройки);
ОбщийМодуль.КоннекторHTTP.Модуль : 1655 : ОбработкаОтветаСКодом401(Сессия, ПодготовленныйЗапрос, Настройки, Ответ);
ОбщийМодуль.КоннекторHTTP.Модуль : 1772 : Ответ = ОтправитьHTTPЗапрос(Сессия, ПодготовленныйЗапрос, Настройки);
ОбщийМодуль.КоннекторHTTP.Модуль : 1655 : ОбработкаОтветаСКодом401(Сессия, ПодготовленныйЗапрос, Настройки, Ответ);
ОбщийМодуль.КоннекторHTTP.Модуль : 1772 : Ответ = ОтправитьHTTPЗапрос(Сессия, ПодготовленныйЗапрос, Настройки);
ОбщийМодуль.КоннекторHTTP.Модуль : 1655 : ОбработкаОтветаСКодом401(Сессия, ПодготовленныйЗапрос, Настройки, Ответ);
ОбщийМодуль.КоннекторHTTP.Модуль : 1772 : Ответ = ОтправитьHTTPЗапрос(Сессия, ПодготовленныйЗапрос, Настройки);
ОбщийМодуль.КоннекторHTTP.Модуль : 1655 : ОбработкаОтветаСКодом401(Сессия, ПодготовленныйЗапрос, Настройки, Ответ);
ОбщийМодуль.КоннекторHTTP.Модуль : 1772 : Ответ = ОтправитьHTTPЗапрос(Сессия, ПодготовленныйЗапрос, Настройки);
ОбщийМодуль.КоннекторHTTP.Модуль : 1655 : ОбработкаОтветаСКодом401(Сессия, ПодготовленныйЗапрос, Настройки, Ответ);
ОбщийМодуль.КоннекторHTTP.Модуль : 1772 : Ответ = ОтправитьHTTPЗапрос(Сессия, ПодготовленныйЗапрос, Настройки);
ОбщийМодуль.КоннекторHTTP.Модуль : 1655 : ОбработкаОтветаСКодом401(Сессия, ПодготовленныйЗапрос, Настройки, Ответ);
ОбщийМодуль.КоннекторHTTP.Модуль : 1772 : Ответ = ОтправитьHTTPЗапрос(Сессия, ПодготовленныйЗапрос, Настройки);
ОбщийМодуль.КоннекторHTTP.Модуль : 1655 : ОбработкаОтветаСКодом401(Сессия, ПодготовленныйЗапрос, Настройки, Ответ);
ОбщийМодуль.КоннекторHTTP.Модуль : 1772 : Ответ = ОтправитьHTTPЗапрос(Сессия, ПодготовленныйЗапрос, Настройки);
ОбщийМодуль.КоннекторHTTP.Модуль : 1655 : ОбработкаОтветаСКодом401(Сессия, ПодготовленныйЗапрос, Настройки, Ответ);
ОбщийМодуль.КоннекторHTTP.Модуль : 1772 : Ответ = ОтправитьHTTPЗапрос(Сессия, ПодготовленныйЗапрос, Настройки);
ОбщийМодуль.КоннекторHTTP.Модуль : 1655 : ОбработкаОтветаСКодом401(Сессия, ПодготовленныйЗапрос, Настройки, Ответ);
ОбщийМодуль.КоннекторHTTP.Модуль : 1772 : Ответ = ОтправитьHTTPЗапрос(Сессия, ПодготовленныйЗапрос, Настройки);
ОбщийМодуль.КоннекторHTTP.Модуль : 1655 : ОбработкаОтветаСКодом401(Сессия, ПодготовленныйЗапрос, Настройки, Ответ);
ОбщийМодуль.КоннекторHTTP.Модуль : 1772 : Ответ = ОтправитьHTTPЗапрос(Сессия, ПодготовленныйЗапрос, Настройки);
ОбщийМодуль.КоннекторHTTP.Модуль : 1655 : ОбработкаОтветаСКодом401(Сессия, ПодготовленныйЗапрос, Настройки, Ответ);
ОбщийМодуль.КоннекторHTTP.Модуль : 1744 : Если ЭтоРедирект(Ответ.КодСостояния, Ответ.Заголовки) Тогда
ОбщийМодуль.КоннекторHTTP.Модуль : 1701 : КодыСостоянияHTTP = КодыСостоянияHTTP();
ОбщийМодуль.КоннекторHTTP.Модуль : 1112 : Для Каждого Описание Из ОписанияКодовСостоянийHTTP() Цикл
ОбщийМодуль.КоннекторHTTP.Модуль : 0
по причине:
Переполнение стека встроенного языка на сервере
293. user1768870 11.03.25 16:58 Сейчас в теме
Добрый день. Спасибо большое за "Коннектор". Пытаюсь перевести запрос из postman на рельсы 1С и не совсем понимаю как.
Пример запроса GET - http://%адрес%/api/thirdparty/employees/events, передаю в теле
{
"from": "2025-03-11 10:00:00",
"to": "2025-03-11 15:20:00"
}
Подскажите как с помощью инструмента отправить такой запрос? В постман получаю json с ответом, а в 1С получаю просто страницу текстом.
295. SpaceOfMyHead 203 25.07.25 14:52 Сейчас в теме
(293) Попробуйте аналог - HTTP-клиент. В интерактивном режиме позволяет импортировать файл Postman и сгенерировать код 1С.
294. maksa2005 381 16.05.25 12:31 Сейчас в теме
Чет пробовал сделать по конекту и бросил, быстрее так и работает

ТекстЗапроса = ""; 
	СтруктураЗапроса = новый Структура;
	СтруктураЗапроса.Вставить("login",  		"login");
	СтруктураЗапроса.Вставить("password",  		"password");
	
	ЗаписьJSON = Новый ЗаписьJSON;
	ЗаписьJSON.УстановитьСтроку();
	ЗаписатьJSON(ЗаписьJSON, СтруктураЗапроса);
	ТекстЗапроса = ЗаписьJSON.Закрыть();
	
	Соединение = Новый HTTPСоединение("id.____.pro",,,,,, Новый ЗащищенноеСоединениеOpenSSL());
		
	ЗаголовокЗапросаHTTP = Новый Соответствие();
	ЗаголовокЗапросаHTTP.Вставить("Content-Type","application/json; charset=utf-8");
	
	ЗапросHTTP = Новый HTTPЗапрос("/api/v1/login", ЗаголовокЗапросаHTTP);
	ЗапросHTTP.УстановитьТелоИзСтроки(ТекстЗапроса);
	
	РезультатСоединения = Соединение.ВызватьHTTPМетод("POST", ЗапросHTTP);     
	Тело = РезультатСоединения.ПолучитьТелоКакСтроку();
	Если РезультатСоединения.КодСостояния<>200 Тогда   
	КонецЕсли;
Показать
297. kwazi 823 15.08.25 17:33 Сейчас в теме
"1. При доступе к временным файлам необходимо следовать требованиям стандартов, описанным по ссылке.
https://its.1c.ru/db/v8std/content/542/hdoc

Таким образом, неправильно:

Каталог = КаталогВременныхФайлов();
ИмяФайла = Строка(Новый УникальныйИдентификатор) + """".xml"""";
ИмяПромежуточногоФайла = Каталог + ИмяФайла;
Данные.Записать(ИмяПромежуточногоФайла);


Если по каким-то причинам прикладной код не удалит созданный файл (например, между блоками создания и удаления временного файла возникнет штатное или нештатное исключение), этот файл так и останется в каталоге временных файлов.

Правильно:

ИмяПромежуточногоФайла = ПолучитьИмяВременногоФайла(""""xml"""");
Данные.Записать(ИмяПромежуточногоФайла);



Так же следует обратить внимание на удаление временных файлов и каталогов после их использования (КаталогВФ)

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

КаталогВФ = ПолучитьИмяВременногоФайла();
СоздатьКаталог(КаталогВФ);


По окончании работы с созданным каталогом, его необходимо удалить"""
298. kwazi 823 15.08.25 17:34 Сейчас в теме
Для работы во фреше недопустимо использование метода Вычислить:
Функция ПроксиПоУмолчанию(URL)

ПроксиПоУмолчанию = Новый ИнтернетПрокси;
// BSLLS:ExecuteExternalCodeInCommonModule-off
ИмяОМПолученияФайловБСП = "ПолучениеФайловИзИнтернета";
СтруктураURL = РазобратьURL(URL);
Модуль = Общегоназначения.ОбщийМодуль(ИмяОМПолученияФайловБСП);
ПроксиПоУмолчанию = Модуль.ПолучитьПрокси(СтруктураURL.Схема);
// BSLLS:ExecuteExternalCodeInCommonModule-on

Возврат ПроксиПоУмолчанию;

КонецФункции
Показать
299. tambu 88 28.08.25 18:43 Сейчас в теме
Владимир, добрый день!

Столкнулся с Вашим коннектором. Есть вопрос, у Вас в случае редиректа запроса не всегда устанавливается тело запроса. Например при ошибке 302 это не происходит. Я у себя принудительно сделал заполнение. Однако не могу понять, может Вы специально так сделали?
Вот код расширения для исправления, чтобы было понятнее о чем речь:
ПодготовитьЗапросДляРедиректа
300. tambu 88 28.08.25 18:55 Сейчас в теме
(299) Вопрос снят, посмотрел в стандарт и понял, что 302 ошибку нельзя для POST применять. Но, с другой стороны, попадаются и такие настройки.
301. vanel_444 29.08.25 09:48 Сейчас в теме
Добрый день, а как можно прочитать в Структуру?
КоннекторHTTP.GetJson(URL);
Прикрепленные файлы:
302. TMV 1 02.09.25 04:39 Сейчас в теме
(301) см. ПараметрыПреобразованияJSONПоУмолчанию().ПрочитатьВСоответствие
303. vanel_444 04.09.25 09:52 Сейчас в теме
(302) Привет, а как я должен это смотреть , если этот блок не ищется поиском?

Как поправить залепить костыль я нашел, но хотел бы оставить типовой код
304. TMV 1 05.09.25 05:34 Сейчас в теме
(303) попробуйте такой вариант
ПараметрыПреобразования = Новый Структура;
ПараметрыПреобразования.Вставить("ПрочитатьВСоответствие", Ложь);
ДополнительныеПараметры = Новый Структура("ПараметрыПреобразованияJSON", ПараметрыПреобразования);
КоннекторHTTP.GetJson(URL, , ДополнительныеПараметры);
305. vanel_444 08.09.25 11:02 Сейчас в теме
(304) Спасибо большое,помогли
306. Raideres 8 23.01.26 10:29 Сейчас в теме
Как отправить put запрос чтобы в тело передать вот такую структуру

Request body

[
  {
    "productId": 0,
    "available": true,
    "deliverable": true,
    "Цена в копейках": 0
  }

  {
    "productId": 22,
    "available": true,
    "deliverable": true,
    "Цена в копейках": 155.00
  }
]

Показать
307. vain79 12.02.26 09:10 Сейчас в теме
(306)

В ТелоЗапросаJSON кладете строку json

и вот так

КоннекторHTTP.Put(ЭтотОбъект.АдресAPI + "/path",, Новый Структура("Заголовки, JSON", Заголовки, ТелоЗапросаJSON));
308. user625107_barabambler1s 19.02.26 16:00 Сейчас в теме
Плюсую! Отличный модуль.
Есть небольшое предложение пофиксить такой момент: некоторые API исполняют параметры запроса типа "employee_ids[]=153689". И вот тут перестает работать потому что структура не поддерживает квадратные скобки.
Я то для себя поправил, но кому-то может сильно нужно будет
309. alexey-simf 38 08.06.26 15:50 Сейчас в теме
Может я не разобрался или чего-то не знаю, но, для своей задачи, в процедуре КодироватьПараметрыЗапроса пришлось сделать следующие изменения

	Для Каждого Значение Из Значения Цикл
		// добавил:
		Если ТипЗнч(Значение) = Тип("Булево") Тогда
			Значение = XMLСтрока(Истина);
		КонецЕсли;
		// конец добавления
		ЗначениеПараметра = КодироватьСтроку(Значение, СпособКодированияСтроки.КодировкаURL);
		ЧастиПараметрыЗапроса.Добавить(СтрШаблон("%1=%2", Параметр.Ключ, ЗначениеПараметра));
	КонецЦикла;
Показать


без этого, в URL вместо "parametr=true" получалось "parametr=%D0%94%D0%B0" :(
310. rozer 324 22.06.26 11:48 Сейчас в теме
Спасибо, очень нужный инструмент. А поддержка асинхронности которую завезли в 8.3.21 не планируется? Я понимаю что библиотека только на сервере но все же.
311. ABit 11.07.26 14:15 Сейчас в теме
Ответ приходит не в той кодировке
Кидаю post запрос из источника в базу-приемнику

Заголовки = Новый Соответствие;
		Заголовки.Вставить("Content-Type", "text/xml; charset=utf-8");
		Результат = httpКоннектор.POST("мой адрес",СтрокаJSON, Новый Структура("Заголовки", Заголовки));  


В базе-приемнике
	ЧтениеJSON = Новый ЧтениеJSON;
	ЧтениеJSON.УстановитьСтроку(СтрокаJSON);
	МассивСтрок = ПрочитатьJSON(ЧтениеJSON, Ложь);	      


...далее непереводимая игра слова со своим модулем данных....


Возвращаю некую структуру Ответ с ключами "Код" и "Сообщение"
	ЗаписьJSON = новый ЗаписьJSON;
	ЗаписьJSON.УстановитьСтроку();
	ЗаписатьJSON(ЗаписьJSON, Ответ);
	СтрокаJSON = ЗаписьJSON.Закрыть();
	Возврат СтрокаJSON;


В источник данные прилетают, но не в той кодировке. ЧЯДНТ?
312. ABit 11.07.26 14:46 Сейчас в теме
(311) Разобрался, отбой.
Для отправки сообщения требуется регистрация/авторизация