1

Интеграция 1С с Вилон. Нужна подсказка

Тема: Интеграция 1С с Вилон. Нужна подсказка

Добрый день,
Хочу подключиться и получить данные с сервера. Не понятно как делать это в одной сессии. Пытаюсь сделать следующим кодом, СИД получаю, но при втором соединении выдает error 1 - Недействительная сессия. Второе соединение делал - та же беда

СерверАГ = "sdk.wialon.pro";
имяВыходногоФайла = ПолучитьимяВременногоФайла();

HTTPСоединение = Новый HTTPСоединение(СерверАГ);
   
Результат=HTTPСоединение.Получить("ajax.html?svc=core/login&params={""user"":""Пользователь"",""password"":""пароль""}", имяВыходногоФайла);
   
ЧтениеJson = Новый ЧтениеJSON;
ЧтениеJson.ОткрытьФайл(имяВыходногоФайла);
ДанныеJson = ПрочитатьJSON(ЧтениеJson,ложь);
ЧтениеJson.Закрыть();
   
Сид = ДанныеJson.ssid;

имяВыходногоФайла2 = ПолучитьимяВременногоФайла();

HTTPСоединение.Получить("ajax.html?svc=report/get_result_rows&params={""tableIndex"":0,""indexFrom"":0,""indexTo"":0}&sid="+сид,имяВыходногоФайла2);
   
ЧтениеJson2 = Новый ЧтениеJSON;
ЧтениеJson2.ОткрытьФайл(имяВыходногоФайла2);
ДанныеJson2 = ПрочитатьJSON(ЧтениеJson2,ложь);
ЧтениеJson2.Закрыть();

что не так делаю, куда копать?
возможно, сессия не держится

2

Интеграция 1С с Вилон. Нужна подсказка

Re: Интеграция 1С с Вилон. Нужна подсказка

А вроде как авторизации по логину паролю уже нет с 2015 года....

gps-report.ru
Разработка приложений для Pilot, Gelios, GlonassSoft, Omnicomm, Globars, Axenta, Wialon, Автограф, Эра
Мы расширяем возможности мониторинга!
Telegram: @dire77
3

Интеграция 1С с Вилон. Нужна подсказка

(17/08/2023 22:35:39 отредактировано elsygroup)

Re: Интеграция 1С с Вилон. Нужна подсказка

Для получения SID я делаю так:
Функция ПолучитьSID(ДоменныйАдрес, ИспользоватьSSL, ТекущийТокен) 
   
    ТекущийSID = Неопределено;
       
    Ресурс = "wialon/ajax.html?svc=token/login&params={""token"":""" + ТекущийТокен + """}";           
   
    СтруктураВозврата = ПолучитьОтветСервера(Ресурс, Истина, Ложь);
   
    ДанныеJSON = СтруктураВозврата.ДанныеJSON;   
   
    Если ДанныеJSON.Получить("error") = Неопределено Тогда        
        ТекущийSID = ДанныеJSON.Получить("eid");
    Иначе
        КодОшибки = ДанныеJSON.error;
        ТекстОшибки = ДанныеJSON.reason;
       
        ТекстСообщения = НСтр("ru = 'При получении SID произошла ошибка. Код ошибки %1. Текст ошибки: %2.'; uk = 'При отриманні SID сталася помилка. Код помилки %1. Текст помилки: %2.'");
        ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстСообщения, КодОшибки, ТекстОшибки);   
        ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);   
    КонецЕсли;
   
    Возврат ТекущийSID;
   
КонецФункции

Функция ПолучитьОтветСервера(Ресурс, ПолучатьДанныеКакСоответствие=Ложь,ДобавлятьSID=Ложь,ТекущийSID=Неопределено)
   
    ДоменныйАдрес      = Константы.ДоменныйАдрес.Получить();
    ИспользоватьSSL      = Константы.ИспользоватьSSL.Получить();
   
    Если ДобавлятьSID = Истина Тогда
        Ресурс = Ресурс + ТекущийSID;   
    КонецЕсли;
   
    Заголовки = Новый Соответствие();
    Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded");
   
    Если ИспользоватьSSL = Истина Тогда
        HTTPСоединение = Новый HTTPСоединение(ДоменныйАдрес, 443,,,,, Новый ЗащищенноеСоединениеOpenSSL());
    Иначе
        HTTPСоединение = Новый HTTPСоединение(ДоменныйАдрес, 80,,,,,);   
    КонецЕсли;
   
    Запрос = Новый HTTPЗапрос(Ресурс, Заголовки);
   
    HTTPОтвет = HTTPСоединение.ОтправитьДляОбработки(Запрос);
   
    ТелоОтвета = HTTPОтвет.ПолучитьТелоКакСтроку();
                   
    ДанныеJSON = ПолучитьДанныеJSON(ТелоОтвета, ПолучатьДанныеКакСоответствие);
       
    СтруктураВозврата = Новый Структура("ДанныеJSON, ТелоОтвета", ДанныеJSON, ТелоОтвета);
   
    Возврат СтруктураВозврата;
   
КонецФункции

Функция ПолучитьДанныеJSON(ТелоОтвета, ПрочитатьВСоответствие=Ложь)
   
    ЧтениеJSON = Новый ЧтениеJSON;
    ЧтениеJSON.УстановитьСтроку(ТелоОтвета);
   
    Попытка
        Данные = ПрочитатьJSON(ЧтениеJSON, ПрочитатьВСоответствие);
    Исключение
        Данные = Новый Массив;   
    КонецПопытки;
   
    ЧтениеJSON.Закрыть();
   
    Возврат Данные;
   
КонецФункции // ПолучитьДанныеJSON()