首页 > 解决方案 > 更改 zeep 绑定

问题描述

我正在尝试连接到定义 2 个服务位置的肥皂端点,其中一个是无效的。如何更改绑定以使用其他服务。我是 SOAP 新手,医生

from zeep import Client
from zeep import xsd

client = Client('http://my-endpoint.com/production.svc?wsdl')

service2 = client.bind('SecondService', 'Port12')
service2.someOperation(myArg=1)

但它没有提到论据是什么。

我的服务定义为:

<wsdl:service name="PackageInq">
<wsdl:port name="BasicHttpBinding_IPackageInq" binding="tns:BasicHttpBinding_IPackageInq">
<soap:address location="http://invalid.local:8989/TopUp/PackageInq.svc"/>
</wsdl:port>
<wsdl:port name="BasicHttpsBinding_IPackageInq" binding="tns:BasicHttpsBinding_IPackageInq">
<soap:address location="https://valid.com/TopUp/PackageInq.svc"/>
</wsdl:port>
</wsdl:service>

我已经尝试过类似的事情 client.bind('BasicHttpsBinding_IPackageInq')并得到:

ValueError: Service not found

另外,如果您知道我可以阅读的任何好文档,如果您推荐它,我会很高兴。

更新 我找到了正确的语法

client.bind('PackageInq', 'BasicHttpsBinding_IPackageInq') 

但仍然在使用时

client.service.Method()

再次命中无效端点

标签: soapbindingzeep

解决方案


好吧,在更仔细地阅读文档后 client.bind返回 aservice并且您应该使用它而不是客户端。

所以它会

from zeep import Client
from zeep import xsd

client = Client('http://my-endpoint.com/production.svc?wsdl')

service2 = client.bind('SecondService', 'Port12')
service2.someOperation(myArg=1)

推荐阅读