Как получить сервисную информацию SOAP в suds-py3 - PullRequest
0 голосов
/ 06 октября 2019

Я использую suds-py3, и я ищу для создания словарей или списков с информацией о сервисе soap в WSDL. Например, в документации suds-py3 мыльный клиент выглядит следующим образом:

from suds.client import Client
url=<wsdl_url>
client = Client(url)

И этот клиент показывает следующую информацию при вызове print:

print(client)
Suds - version: 1.3.3.1 build: IN 20180220

Service (WebServiceTestBeanService) tns="http://test.server.enterprise.rhq.org/"
 Prefixes (1):
   ns0 = "http://test.server.enterprise.rhq.org/"
 Ports (1):
   (Soap)
     Methods:
       addPerson(Person person, )
       echo(xs:string arg0, )
       getList(xs:string str, xs:int length, )
       getPercentBodyFat(xs:string name, xs:int height, xs:int weight)
       getPersonByName(Name name, )
       hello()
       testExceptions()
       testListArg(xs:string[] list, )
       testVoid()
       updatePerson(AnotherPerson person, name name, )
 Types (23):
   Person
   Name
   Phone
   AnotherPerson

Итак, что яхочу иметь возможность получить информацию об имени службы, существующих методах, если они простые или сложные, об их параметрах, например:

service='WebServiceTestBeanService'
Methods={
         'addPerson': 'complex',
         'echo': 'simple',
         'getList': 'simple',
         ...}
Parameters={
            'addPerson':[Person],
            'echo': [arg0],
            'getList':[str, lenght],
            ...}

Мне действительно не нужна функция, чтобы сделатьте же словари, которые я упоминал, очень помогли бы, если бы я мог получать информацию отдельно. Как составить список методов можно с помощью следующего кода:

method_list = []
for method in client.wsdl.services[0].ports[0].methods:
    method_list.append(method)
print(method_list)
addPerson, echo, getList, ...

Или название сервиса:

service_name = client.wsdl.services[0].name
print(service_name)
WebServiceTestBeanService
...