Страница 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
Ошибка работы с REST в 1С, запущенным как управляемое приложение
1с-rest-error.png (8.86 КБ) Просмотров: 630

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-запрос?