问题描述
我必须使用SOAP服务中的数据,这对我来说是一项新技术。我使用以下代码从服务器连接:
from requests import Session
from requests.auth import HTTPBasicAuth
from zeep import Client
from zeep.transports import Transport
wsdl= 'my_service.com/MEX?wsdl'
username = 'john_doe'
password = 'password'
session = Session()
session.auth = HTTPBasicAuth(username,password)
transport = Transport(session=session)
client = Client(wsdl=wsdl,transport=transport)
使用SoapUi软件并连接到该服务器,我意识到它具有三个绑定,每个绑定都有很多Web服务。但是,使用Python,我只能通过第一个绑定访问WebServices(通过client.service)。我想知道如何从另外两个绑定访问Webservice方法。
OBS:client.wsdl.bindings返回一个dict,将包含在SoapUI上看到的绑定名称的某些URL映射到Soap11Binding实例。
解决方法
默认情况下,Zeep
拾取WSDL中的第一个绑定。此绑定可通过以下方式获得
client.service
。要使用特定的绑定,可以在客户端对象上使用bind()
方法
示例代码:
service2 = client.bind('SecondService','Port12')
service2.someOperation(arg1='abc',arg2=2)