Ошибка создания ЗащищенноеСоединениеOpenSSL
Опишите ошибку При создании защищённого соединения возникает ошибка.
Воспроизведение ошибки При выполнении строки кода: Соединение = Новый HTTPСоединение(Адрес,,,,,, Новый ЗащищенноеСоединениеOpenSSL);
Возникает ошибка: ScriptEngine.Machine.RuntimeException: {Модуль C:\Program Files (x86)\TurboConf\user_scripts\TurboTrackerEva.os / Ошибка в строке: 18 / Конструктор не найден (ЗащищенноеСоединениеOpenSSL)} Соединение = Новый HTTPСоединение(Адрес,,,,,, Новый ЗащищенноеСоединениеOpenSSL); ---> ScriptEngine.Machine.RuntimeException: {Модуль / Ошибка в строке: -1 / Тип не зарегистрирован (ЗащищенноеСоединениеOpenSSL)}
Ожидаемое поведение Создаётся соединение без ошибок. При запуске этого же кода в 1С Предприятие ошибки не возникает.
Окружение
- ОС: Windows
- Версия: 10
- 1С:Предприятие 8.3 (8.3.22.1923)
В 1Скрипт делается по другому. Указываете в адресе протокол https:// и все будет работать. Т.е. объект ЗащищенноеСоединениеOpenSSL не реализован за ненадобностью.
Адрес должен быть не my.server.com, а https://my.server.com
Но наверное, имело бы смысл и реализовать, для совместимости.
Спасибо, сработало, но не до конца. Соединение установилось, но при отправке запроса на обработку сайт возвращает необходимость авторизации. Прошу подсказать ещё, что в коде ниже может работать не так, как в 1С:Предприятие. ещё раз, строка Ответ.ПолучитьТелоКакСтроку() возвращает html страницу с запросом пароля, в 1С:Предприятие она же возвращает ответ на запрос.
Соединение = Новый HTTPСоединение(Адрес);
Заголовки = Новый Соответствие;
Заголовки.Вставить("Content-Type", "application/json");
Заголовки.Вставить("Authorization", Токен);
Фильтры = Новый Массив;
ФильтрПользователь = Новый Массив;
ФильтрПользователь.Добавить("responsible.login");
ФильтрПользователь.Добавить("==");
ФильтрПользователь.Добавить(Логин);
Фильтры.Добавить(ФильтрПользователь);
Фильтры.Добавить(СтрРазделить("cache_status_type == IN_PROGRESS", " "));
Аргументы = Новый Структура("filter", Фильтры);
СтруктураЗапроса = Новый Структура("jsonrpc, method, kwargs", "2.2", "CmfTask.list", Аргументы);
ПараметрыJSON = Новый ПараметрыЗаписиJSON;
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку(ПараметрыJSON);
ЗаписатьJSON(ЗаписьJSON, СтруктураЗапроса);
ЗапросJSON = ЗаписьJSON.Закрыть();
Запрос = Новый HTTPЗапрос("/", Заголовки);
Запрос.УстановитьТелоИзСтроки(ЗапросJSON);
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку());
Данные = ПрочитатьJSON(ЧтениеJSON, Ложь);
Надо снять снифером полностью http-запрос, который шлет 1С и который шлет 1Скрипт и сравнить чем они отличаются. Например, через https://www.telerik.com/fiddler или https://www.nirsoft.net/utils/http_network_sniffer.html
Скорее всего разница будет или в кодировках русских букв, или в добавляемых 1С-кой каких-то еще заголовках
@AA-KLex Попробуйте воспользоваться библиотекой 1connector (https://github.com/vbondarevsky/1connector) она берет на себя много низкоуровневых вещей. Возможно, у вас там редиректы приходят и 1С их сама обрабатывает... Без дампов http мне сложно сказать. Попробуйте через 1connector
Получил пакеты, в каждом из которых сделал по два запроса. Различия и сами пакеты прилагаю. 1connector ещё не пробовал.
Пакеты, отправляемые OneScript
Пакеты, отправляемые 1С
Исходники пакетов Исходники.zip
А http пакеты из этого добра можно извлечь? :)
Знать бы как. Я тоже ожидал, что будет более понятно. Если речь о теле запроса и заголовках - он одинаковый, формирую его одинаковым кодом.
То, что он в объектной технике одинаковый, не означает, что он одинаковый в raw
Ставлю на редиректы. @AA-KLex попробуйте 1connector
@AA-KLex Попробуйте воспользоваться библиотекой 1connector (https://github.com/vbondarevsky/1connector) она берет на себя много низкоуровневых вещей. Возможно, у вас там редиректы приходят и 1С их сама обрабатывает... Без дампов http мне сложно сказать. Попробуйте через 1connector
@EvilBeaver Как установить 1connector если скрипт вызывается из HostedScriptEngine? То есть само приложение oscript.exe у меня отсутствует.
@EvilBeaver Подключил 1connector - скопировал в библиотеки. Ничего не изменилось - возвращается html страничка с требованием авторизации. Напишу в поддержку Евы - может там что подскажут.