CallMethodWithoutAuthXML — различия между версиями

Материал из razgovorov.ru
Перейти к: навигация, поиск
 
Строка 26: Строка 26:
 
<syntaxhighlight lang="python" line='line'>
 
<syntaxhighlight lang="python" line='line'>
  
     def read_all_xml( [ query_id ] ):
+
    answer = read_all_object( query_id )
 +
 
 +
    session_id = answer[ 'Result' ]
 +
 
 +
     def read_all_object( query_id ):
 
          
 
          
 
         # Словарь с функциями обработки событий по типу
 
         # Словарь с функциями обработки событий по типу
Строка 35: Строка 39:
 
         }
 
         }
  
         json_string = ole.ReadAllXml2()
+
         json_string = ole.ReadAllObject()
         events = pars(json_string)
+
         events = json.loads(json_string)
  
 
         for event in events:
 
         for event in events:

Текущая версия на 16:54, 1 июня 2021

Описание

Вызов методов модуля плагина без авторизации. Предназначен для вызовов из интегрируемых систем, работающих с xml, таких как 1C или SAP.

Параметры

  • query_id ! (строка) - uuid для идентификации вызова метода
  • guid_module ! (строка) - uuid модуля полученный через GetModule()
  • parameters_module_method ! (строка) - xml с параметрами, сериализованный в строку
  • host ! (строка) - хост на который хотим пойти online.sbis.ru

Результат

Результат следует ожидать через вызов функции ReadAllXml2() В результате должно прийти событие Message, у которого в Result лежит идентификатор сессии - session_id

Пример успешного вызова

query_id = str(uuid.uuid4())
module_method = "ExtSdk2.AuthByPassword"
parameters_module_method = json.dumps({"Login": "login", "Password": "password"}, ensure_ascii=True)
domain = online.sbis.ru

CallMethodWithoutAuthXML( query_id, guid_module, module_method, parameters_module_method, domain )

Пример ответа

    answer = read_all_object( query_id )

    session_id = answer[ 'Result' ]

    def read_all_object( query_id ):
        
        # Словарь с функциями обработки событий по типу
        supported_events = {
            'Message': parse_Message,
            'Error': parse_Error,
            'Event': parse_Event
        }

        json_string = ole.ReadAllObject()
        events = json.loads(json_string)

        for event in events:
            event_type = event.get('type')
            supported_events[event_type](event)
           
            if( event[ 'queryID' ] == query_id )
               return event[ 'data' ]