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

Материал из razgovorov.ru
Перейти к: навигация, поиск
Строка 24: Строка 24:
  
 
== Пример ответа ==
 
== Пример ответа ==
<syntaxhighlight lang="python" line='line'>
+
<syntaxhighlight lang="python">
  
    answer = read_all_object( query_id )
+
<array>
 
+
<object>
    session_id = answer[ 'Result' ]
+
<str name="type">Message</str>
 
+
<str name="queryID">d29cc316-aad2-4b4b-a980-fecf59e0ccdd</str>
    def read_all_object( query_id ):
+
<str name="data">&lt;object&gt;&lt;str name="Result"&gt;MTI4ZmU3NGMzOWM4NDYxMDgzYWQ5ZjQ1OWMzZTRmYzM&lt;/str&gt;&lt;object name="Stat"&gt;&lt;object name="ExtSdk2"&gt;&lt;object name="ExtSdk2.AuthByPassword"&gt;&lt;num name="count"&gt;1&lt;/num&gt;&lt;num name="time"&gt;0&lt;/num&gt;&lt;/object&gt;&lt;/object&gt;&lt;object name="СБИС"&gt;&lt;object name="ExtSdk2.AuthByPassword"&gt;&lt;num name="count"&gt;1&lt;/num&gt;&lt;num name="time"&gt;374&lt;/num&gt;&lt;/object&gt;&lt;/object&gt;&lt;/object&gt;&lt;/object&gt;</str>
       
+
</object>
        # Словарь с функциями обработки событий по типу
+
</array>
        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' ]
 
  
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
Массив xml объектов сериализованный в строку
  
 
[[Категория:NativeAPI ExtSdk2]]
 
[[Категория:NativeAPI ExtSdk2]]

Версия 15:31, 16 марта 2023

Описание

Вызов методов модуля плагина без авторизации. Предназначен для вызовов из 1c с передачей параметров в виде xml.

Параметры

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

Результат

Результат следует ожидать через вызов метода ReadAllXml В результате должно прийти событие 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 )

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

<array>
	<object>
		<str name="type">Message</str>
		<str name="queryID">d29cc316-aad2-4b4b-a980-fecf59e0ccdd</str>
		<str name="data">&lt;object&gt;&lt;str name="Result"&gt;MTI4ZmU3NGMzOWM4NDYxMDgzYWQ5ZjQ1OWMzZTRmYzM&lt;/str&gt;&lt;object name="Stat"&gt;&lt;object name="ExtSdk2"&gt;&lt;object name="ExtSdk2.AuthByPassword"&gt;&lt;num name="count"&gt;1&lt;/num&gt;&lt;num name="time"&gt;0&lt;/num&gt;&lt;/object&gt;&lt;/object&gt;&lt;object name="СБИС"&gt;&lt;object name="ExtSdk2.AuthByPassword"&gt;&lt;num name="count"&gt;1&lt;/num&gt;&lt;num name="time"&gt;374&lt;/num&gt;&lt;/object&gt;&lt;/object&gt;&lt;/object&gt;&lt;/object&gt;</str>
	</object>
</array>

Массив xml объектов сериализованный в строку