Имя операции SOAP: импорт с помощью Zeep - PullRequest
0 голосов
/ 24 апреля 2018

У меня проблема с именем операции WSDL: импорт.Это одна из наиболее важных удаленных операций, которая обновляет список продуктов на удаленном сервере.

Проблема начинается, когда я хочу вызвать метод:

client.service.import('ns0:Product_Import', _soapheaders = [header_value])
node = client.service.import(product_name)
                           ^
SyntaxError: invalid syntax

, потому что «импорт»Заявление зарезервировано для питона.Как сделать так, чтобы вызов этого метода не мешал Python?

Этот код ниже работает нормально.Может быть, кто-то будет его использовать.

from zeep import Client
from zeep import xsd

loginIn = {'username': 'my_username', 'password': 'my_password'}
wsdl_auth = 'http://some-wsdl-service.com/auth/wsdl/'
wsdl_products = 'http://some-wsdl-service.com/products/wsdl/'
header = xsd.Element(
'{http://some-wsdl-service.com/products/wsdl/}Header',
    xsd.ComplexType([
        xsd.Element(
            '{http://some-wsdl-service.com/products/wsdl/}sessionId',
            xsd.String()
       ),
   ])
)
client = Client(wsdl = wsdl_auth)
response = client.service.login(loginIn)
sid = response.sessionId
header_value = header(sessionId = sid)
client = Client(wsdl = wsdl_products)
list_of_products = client.service.get('ns0:Product_List',        
                                      _soapheaders [header_value])
client = Client(wsdl = wsdl_auth)
request_to_end = client.service.logout(_soapheaders=[header_value]))

1 Ответ

0 голосов
/ 25 апреля 2018

Вы можете использовать getattr() для доступа к методам в client.service

_import = getattr(client.service, 'import')
result = _import(product_name)
...