Страница 1 из 1
Ошибка #0102 при REST запросе из 1с

Добавлено:
Чт дек 03, 2020 9:06 pm
Vladimir Kuzmin
Собственно пробую пример
https://nsoft-s.com/mcserverhelp/index.html?integrationapiexample1crest.htm и получаю в логах
Ошибка #0102: попытка подключения неизвестного приложения, IP: "10.15.хх.хх", Data: "POST /API/?data= HTTP/1.1"
Подскажите куда копать?
Re: Ошибка #0102 при запросе из 1с

Добавлено:
Чт дек 03, 2020 9:59 pm
Алексей Пикуров
Здравствуйте. Что возвращается в 1с?
Re: Ошибка #0102 при REST запросе из 1с

Добавлено:
Чт дек 03, 2020 10:04 pm
Vladimir Kuzmin
Ничего.
Re: Ошибка #0102 при REST запросе из 1с

Добавлено:
Чт дек 03, 2020 10:05 pm
Алексей Пикуров
Покажите свой код, пожалуйста.
Re: Ошибка #0102 при REST запросе из 1с

Добавлено:
Чт дек 03, 2020 10:06 pm
Vladimir Kuzmin
Вызывается исключение и Ошибка при отправке запроса: {ВнешняяОбработка.ВнешняяОбработка1.МодульОбъекта(64)}: Ошибка при вызове метода контекста (ОтправитьДляОбработки): Ошибка работы с Интернет: Server returned nothing (no headers, no data)
Re: Ошибка #0102 при REST запросе из 1с

Добавлено:
Чт дек 03, 2020 10:07 pm
Алексей Пикуров
Текст программы.
Re: Ошибка #0102 при REST запросе из 1с

Добавлено:
Чт дек 03, 2020 10:07 pm
Vladimir Kuzmin
Код: Выделить всёСервер = "хх.хх.40.ххх";
Порт = 80;
Ресурс = "/API/?data=";
Ключ = "ывывывфыв58";
UINПолучателя = "4";
ТекстСообщения = "Тестовое сообщение от " + ТекущаяДата() + Символы.ВК + Символы.ПС + "строка 2";
СтруктураДанных = Новый Структура;
СтруктураДанных.Вставить("cmd", "0002");
СтруктураДанных.Вставить("UserFrom", "0");
СтруктураДанных.Вставить("UserTo", UINПолучателя);
СтруктураДанных.Вставить("Msg", ТекстСообщения);
СтруктураДанных.Вставить("APIStype", "mcrest");
СтруктураДанных.Вставить("ServerKey", Ключ);
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, СтруктураДанных);
СтрокаJSON = ЗаписьJSON.Закрыть();
Попытка
HTTP = Новый HTTPСоединение(Сервер,Порт,,,,30);
HTTPЗапрос = Новый HTTPЗапрос(Ресурс);
HTTPЗапрос.Заголовки.Вставить("Content-type", "application/x-www-form-urlencoded");
HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаJSON, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
Результат = HTTP.ОтправитьДляОбработки(HTTPЗапрос);
Если Результат.КодСостояния <> 200 Тогда
Сообщить("Ошибка при отправке запроса: " + Результат.КодСостояния);
КонецЕсли;
Исключение
Сообщить("Ошибка при отправке запроса: " + ОписаниеОшибки());
КонецПопытки;
Re: Ошибка #0102 при REST запросе из 1с

Добавлено:
Чт дек 03, 2020 10:08 pm
Алексей Пикуров
Ок, завтра посмотрю. Вы 8.2.3 версию используете?
Re: Ошибка #0102 при REST запросе из 1с

Добавлено:
Чт дек 03, 2020 10:11 pm
Vladimir Kuzmin
1С:Предприятие 8.3 (8.3.15.1656)
"Управление торговым предприятием для Украины", редакция 1.2. (1.2.57.1)
Есть возможность посмотреть детальный лог?
Re: Ошибка #0102 при REST запросе из 1с

Добавлено:
Пт дек 04, 2020 12:04 am
Алексей Пикуров
Я про сервер MyChat спросил

Извините, неточно выразился.
Re: Ошибка #0102 при REST запросе из 1с

Добавлено:
Пт дек 04, 2020 12:05 am
Алексей Пикуров
Подробных логов на сервере пока нет.
Re: Ошибка #0102 при REST запросе из 1с

Добавлено:
Пт дек 04, 2020 7:31 pm
Vladimir Kuzmin
MyChat 8.2.2
Re: Ошибка #0102 при REST запросе из 1с

Добавлено:
Сб дек 05, 2020 4:34 pm
Алексей Пикуров
Я так понимаю, ваш сервер MyChat использует HTTPS-сертификат.
Поэтому код будет таким:
Код: Выделить всё Попытка
ssl = Новый ЗащищенноеСоединениеOpenSSL(
Новый СертификатКлиентаWindows(
СпособВыбораСертификатаWindows.Выбирать),
Новый СертификатыУдостоверяющихЦентровWindows());
HTTP = Новый HTTPСоединение(Сервер,Порт,,,,30,ssl);
HTTPЗапрос = Новый HTTPЗапрос(Ресурс);
HTTPЗапрос.Заголовки.Вставить("Content-type", "application/x-www-form-urlencoded");
HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаJSON, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
Результат = HTTP.ОтправитьДляОбработки(HTTPЗапрос);
Если Результат.КодСостояния <> 200 Тогда
Сообщить("Ошибка при отправке запроса: " + Результат.КодСостояния);
КонецЕсли;
Исключение
Сообщить("Ошибка при отправке запроса: " + ОписаниеОшибки());
КонецПопытки;
Re: Ошибка #0102 при REST запросе из 1с

Добавлено:
Сб дек 05, 2020 4:57 pm
Алексей Пикуров
Дополнили пример для справки, момент с HTTPS важен.
Кстати, сообщение про ошибку в 1C есть, если запускать его как управляемое приложение:
1с-rest-error.png
Re: Ошибка #0102 при REST запросе из 1с

Добавлено:
Вс дек 06, 2020 8:33 pm
Vladimir Kuzmin
Ошибка при отправке запроса: {ВнешняяОбработка.ВнешняяОбработка1.МодульОбъекта(72)}: Ошибка при вызове метода контекста (ОтправитьДляОбработки): Ошибка работы с Интернет: Ошибка инициализации SSL-соединения
SSL нее используется. Считаю что проблема в моей версии 1С. Уже сталкивался что функции работы с JSON работают не корректно. Завтра-послезавтра попробую поправить код.
Re: Ошибка #0102 при REST запросе из 1с

Добавлено:
Вс янв 10, 2021 5:31 pm
Vladimir Kuzmin
Проблема решена. Функционал MyChat и 1С отработали нормально. Проблема была в пробросе портов на Микротике, из двух практически идентичных строк НАТа одна не работала.
Re: Ошибка #0102 при REST запросе из 1с

Добавлено:
Вс янв 10, 2021 5:38 pm
Алексей Пикуров
Аллилуйя

Спасибо, что отписали, рад, что у вас всё получилось.
Re: Ошибка #0102 при REST запросе из 1с

Добавлено:
Вс янв 10, 2021 5:48 pm
Vladimir Kuzmin
1C арендованная в облаке. Закрыто все по самое немогу. Ни норм.тунель поднять, ни ВЕБ-сервис запустить, ни ocx прикрутить для работы с сокетами. А желательно получать уведомления от Mychat в 1С, что в API не реализовано. В общем пока голову ломаю...
Re: Ошибка #0102 при REST запросе из 1с

Добавлено:
Вс янв 10, 2021 5:49 pm
Алексей Пикуров
А как постучать в 1С ? Она может поймать REST-запрос?
Re: Ошибка #0102 при REST запросе из 1с

Добавлено:
Пт май 06, 2022 11:08 am
Vasec666
Здравствуйте!
У меня такая же ошибка. Версия платформы 8.3.18.1289. Конфигурация самописная. Код ровно такой же. SSL не используем. Версия MyChat 5.7.0.3
Код: Выделить всё
&НаСервере
Процедура ОправитьТестовоеСообщениеНаСервере()
Сервер = "192.168.3.8";
Порт = 2004;
Ресурс = "/API/?data=";
//Ключ = "iddqd";
ТекстСообщения= "Тестовое сообщение";
СтруктураДанных = Новый Структура;
СтруктураДанных.Вставить("cmd", "0002");
СтруктураДанных.Вставить("UserFrom", "147");
СтруктураДанных.Вставить("UserTo", "7");
СтруктураДанных.Вставить("Msg", ТекстСообщения);
СтруктураДанных.Вставить("APIStype", "mcrest");
СтруктураДанных.Вставить("ServerKey", Ключ);
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, СтруктураДанных);
СтрокаJSON = ЗаписьJSON.Закрыть();
Попытка
HTTP = Новый HTTPСоединение(Сервер,Порт,,,,30);
HTTPЗапрос = Новый HTTPЗапрос(Ресурс);
HTTPЗапрос.Заголовки.Вставить("Content-type", "application/x-www-form-urlencoded");
HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаJSON, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
Результат = HTTP.ОтправитьДляОбработки(HTTPЗапрос);
Если Результат.КодСостояния <> 200 Тогда
Сообщить("Ошибка при отправке запроса: " + Результат.КодСостояния);
КонецЕсли;
Исключение
Сообщить("Ошибка при отправке запроса: " + ОписаниеОшибки());
КонецПопытки;
КонецПроцедуры
&НаКлиенте
Процедура ОправитьТестовоеСообщение(Команда)
ОправитьТестовоеСообщениеНаСервере();
КонецПроцедуры
Текст ошибки:
Ошибка при отправке запроса: {ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(33)}: Ошибка при вызове метода контекста (ОтправитьДляОбработки): Ошибка работы с Интернет: Server returned nothing (no headers, no data)
Не могу разобраться в чем дело. Подскажете?
Re: Ошибка #0102 при REST запросе из 1с

Добавлено:
Пт май 06, 2022 11:13 am
Алексей Пикуров
Подскажу. Используйте последнюю версию MyChat. 8.14.5.
Re: Ошибка #0102 при REST запросе из 1с

Добавлено:
Пт май 06, 2022 11:56 am
Vasec666
Обновили до последней версии - все так же.
Re: Ошибка #0102 при REST запросе из 1с

Добавлено:
Пт май 06, 2022 12:01 pm
Алексей Пикуров
В вашем скрипте вы прописали 2004 порт и закомментировали ключ доступа к Integration API.
Однако, Get-запросы вы должны отправлять не на ядро сервера (TCP 2004), а на порт веб-сервера. Точный номер порта можете посмотреть в ваших настройках, но обычно это 80-й порт.
Для начала откройте ваш сервер в браузере
http://192.168.3.8В примере из справки также указан 80-й порт.
Re: Ошибка #0102 при REST запросе из 1с

Добавлено:
Пт май 06, 2022 12:09 pm
Vasec666
Да, спасибо, работает! На старой версии перебирал все порты. На 5 версии на 80 порту выдавало ошибку 404.
Re: Ошибка #0102 при REST запросе из 1с

Добавлено:
Пт май 06, 2022 12:10 pm
Алексей Пикуров
Пожалуйста. Всегда используйте последнюю версию, на 5-й версии этой технологии ещё не было.