Коннектор - библиотека для работы с HTTP запросами. Библиотека берет на себя всю рутину работы с HTTP запросами. Буквально в одну строку можно получать данные, отправлять, не заботясь о необходимости конструирования URL, кодирования данных и т.п.
(2)
Жесть. Зашёл, думаю - что за сыр-бор. А тут все друг друга поздравляют с тем, что за 500 рублей продаётся штука из 10 строк?))) Это ж как одинэсники с интернетом работать не умеют, чтобы так радоваться))
request, кстати, бесплатный))
(90)
Борода как у дядьки взрослого, а подгорает как у маленькой девочки)) Аж бедьненький полез смотреть мои разработки)))
Вообще я просто удивился тому, что у 1С-ников так сложно с работой с интернетом, что они сами три строки не могут написать и готовы выкладывать за это деньги)) Ну и попутно удивился тому, что человек берёт пример с бесплатных продуктов, но делает их даже не за 1 см, а аж за 5)) Но теперь-то я гораздо больше удивляюсь вашей ранимой душе и легковоспламенимой попке)))
(20) Я бы с удовольствием всю подсистему получения файлов из интернета заменил на это, за исключением настроек прокси: их всегда брать из настроек БСП и не предлагать переопределять.
(12) "Отличная разработка! Жалко стартмани не хватает, чтобы скачать. Когда редко работаешь с http - забывается. А тут и документация отличная, и сама библиотека удобная"
Отличная библиотека, спасибо!
А имеет большой смысл привязываться к 8.3.10? Да, работа с потоками эффективна с т.зр. расходования памяти, но если убрать потоки можно расширить количество конфигураций, на которых библиотеку можно применять.
(7) присоединяюсь к вопросу.
Можно ли будет использовать для более старых конфигураций?
УПП, например очень часто встречается: версия платформы 8.3.10 и выше, но режим совместимости 8.2.13
(47) в чем именно будет несовместимость? Быстрый анализ кода не выявил каких-то сложностей с заменой встроенных функций работы со строками на самописные. Что я проглядел?
Спасибо!
Очень вовремя, а то писал какие-то свои реализации частных случаев.
Подскажите, может есть на Python библиотека для "другой стороны"? Я, в основном, на 1С делаю http-сервисы, так же была идея как-то унифицировать обработку входящих запросов, возврат значений и ошибок, webhook'и, подписки.
Вопрос: а нет ли библиотеки, которая разбирает фильтры OData в какой-нибудь удобный вид?
Надо делать хттп-сервис в 1с, который бы поддерживал базовые фильтры в стиле OData. Наверняка это уже где-то сделано.
{ОбщийМодуль.КоннекторHTTP.Модуль(1502)}: Ошибка при вызове метода контекста (ПрочитатьJSON)
Объект = ПрочитатьJSON(
по причине:
Непредвиденный символ при чтении JSON
Аутентификация = Новый Структура("Пользователь, Пароль", "1cuser", "1cparol");
Ответ = КоннекторHTTP.Get("http://111.222.333.444/base/hs/service/Test", Новый Структура("Аутентификация", Аутентификация));
Сообщить(Ответ.КодСостояния);
(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 приходит ответ в том, в чем отправили))
(41) Текст ошибки можно посмотреть если вызвать КакТекст.
Вообще, безопасный алгоритм такой:
Ответ = КоннецкторHTTP.Post();
Если Ответ.КодСостояния = 200 Тогда // Зависит от сервиса, где-то и на ошибки возвращать будут JSON
Результат = КоннекторHTTP.КакJson(Ответ);
Иначе
ВызватьИсключение(КоннекторHTTP.КакТекст(Ответ));
КонецЕсли;
Текст ошибки можно посмотреть если вызвать КакТекст.
Именно так.
Я не совсем понятно описал суть:
Результат =КоннекторHTTP.PostJson("http://demo1.aut............./call",Содержимое,Новый Структура("Аутентификация", ПараметрыЗапроса));
Если Результат.Получить("success") Тогда
.....
....
Иначе
Для Каждого ЗаписьОтвета Из Результат.Получить("errors") Цикл
.......
.......
PostJson не всегда возвращает ожидаемый результат.
Бывают ситуации, когда сервер вернет не 200, а кодСостояния =500 (да много их там), то тело будет содержать в себе не Json, а текст (или xml).
Ошибка возникает именно в строке 1502 , как писали в (32)
Результат =КоннекторHTTP.PostJson("http://demo1.auXXXXXXX",Содержимое,Новый Структура("Аутентификация", ПараметрыЗапроса));
Если Результат.Получить("success") Тогда
...
Иначе
Для Каждого ЗаписьОтвета Из Результат.Получить("errors") Цикл
...
Не всегда ответ содержит именно Json. И ошибка в модуле коннектора стр. 1503 как писали в (32).
Я в (41) предложил)
ПараметрыЗапроса = Новый Соответствие;
ПараметрыЗапроса.Вставить("sort[updated_at]", "3");
Ответ = КоннекторHTTP.Get("http://direct.ru/lead/25/list", ПараметрыЗапроса);
1. Какой логин и пароль для обработки тестирования?
2. Как правильно вызвать метод POST c телом из JSON?
При вызове метода PostJson
Выдает ошибку: {ОбщийМодуль.КоннекторHTTP.Модуль(1531)}: Ошибка при вызове метода контекста (ПрочитатьJSON): Недопустимое состояние потока записи JSON
Хотелось бы описание ошибок и примеры по основным методам с данными с которыми будет формироваться запрос.
Ответ = КоннекторHTTP.Post(....);
Если Ответ.КодСостояния = 200 Тогда // Зависит от сервиса, где-то и на ошибки возвращать будут JSON
Результат = КоннекторHTTP.КакJson(Ответ);
Иначе
ВызватьИсключение(КоннекторHTTP.КакТекст(Ответ));
КонецЕсли;
Да возвращается не JSON, не понял из описания метода. POST отрабатывает корректно.
И еще интересно, что при POST-запросе с JSON, если приходит редирект 301, то автоматически меняет метод на GET. И после этого ожидаемо падает с 405 кодом...
И еще интересно, что при POST-запросе с JSON, если приходит редирект 301, то автоматически меняет метод на GET. И после этого ожидаемо падает с 405 кодом...
Либо как рекомендуют по ссылке выше: Если код состояния 301 был получен в ответ на запрос, отличный от GET или HEAD, агент пользователя НЕ ДОЛЖЕН автоматически переназначать запрос, пока нет подтверждения пользователя, так как иначе условия запроса изменятся.
Json = Новый Массив;
ВложенныйОбъект = Новый Соответствие;
ВложенныйОбъект.Вставить("ship-id", "1");
Json.Добавить(ВложенныйОбъект);
Результат = КоннекторHTTP.PostJson("https://httpbin.org/post", Json);
(71) Если токен есть, то достаточно заполнить заголовок
Заголовки = Новый Соответствие;
Заголовки.Вставить("Authorization", "Bearer МойСуперСекретныйТокен");
Результат = КоннекторHTTP.GetJson("http://httpbin.org/headers",, Новый Структура("Заголовки", Заголовки));
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);
Добрый день.
Нет ли в планах или загашниках добавить в библиотеку методов работы с нестандартными для 1С Soap сервисами, схемы которых 1С прочитать не в состоянии и приходится все это отсылать POST'ом, формируя тело самостоятельно?
(86) Приветствую!
Хотел бы уточнить.
1) Собираешься ли ты реализовать поддержку параметровURL ? пример "/storage/{Storage}/{ID}"
2) Поддержку соединения, не каждый раз его инициализировать а что-то подобное .СоздатьСессию().
Есть URL такого вида https://.....//storage/{Storage}/{ID}
Storage и ID это параметры.
Если брать HTTP сервис 1С то в шаблоне они указываются в фигурных скобках.
И тогда когда мы получаем запрос на наш HTTP-сервис: