soap - 更改 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()
再次命中无效端点
解决方案
好吧,在更仔细地阅读文档后
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)
推荐阅读
- python-3.x - 如何使用python连接到redshift jdbc url?
- javascript - Firestore Cloud Function 空集合
- mysql - mysqladmin 使用 -defaults-file=/etc/mysql/debian.cnf 时拒绝访问
- java - Java Websocket Server-Client 解码器不工作
- c# - 如何在 Visual Studio 中为 UWP 应用更改每个目录级别的资产构建设置?
- powershell - 通过 Invoke-Expression 传递 cmd-line IF 语句会中断输出
- java - 如何防止android活动从后台打开?
- typescript - 在 TS [ts(7053)] 中输入 for...in 问题
- amazon-cloudformation - Terraform 插值将不需要的零添加到列表中
- python - 重新启动挂起的线程