更改肥皂绑定
Change zeep binding
我正在尝试连接到定义 2 个服务位置的 soap 端点,其中一个无效。如何更改绑定以使用其他服务。
我是 SOAP 的新手,请查看文档 says:
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
returns a service
你应该使用它而不是客户端。
所以会是like
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)
soap 版本 4.0.0.
<wsdl:service name="RiskAnalysis">
<wsp:PolicyReference xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" URI="#BasicPolicy"/>
<wsdl:port name="RiskAnalysisHttpsSoap11Endpoint" binding="tns:RiskAnalysisSoap11Binding">
<soap:address location="https://addreshere/"/>
</wsdl:port>
<wsdl:port name="RiskAnalysisHttpsSoap12Endpoint" binding="tns:RiskAnalysisSoap12Binding">
<soap12:address location="https://addreshere/"/>
</wsdl:port>
</wsdl:service>
from zeep import Client
requestPayload = {'Attachment': inputQuery.encode() }
soapClient = Client('http://my-endpoint.com/production?wsdl', service_name=RiskAnalysis, port_name=RiskAnalysisHttpsSoap12Endpoint )
soapClient.client.service.OPERATIONS(**requestPayload)
我正在尝试连接到定义 2 个服务位置的 soap 端点,其中一个无效。如何更改绑定以使用其他服务。 我是 SOAP 的新手,请查看文档 says:
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
returns a service
你应该使用它而不是客户端。
所以会是like
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)
soap 版本 4.0.0.
<wsdl:service name="RiskAnalysis">
<wsp:PolicyReference xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" URI="#BasicPolicy"/>
<wsdl:port name="RiskAnalysisHttpsSoap11Endpoint" binding="tns:RiskAnalysisSoap11Binding">
<soap:address location="https://addreshere/"/>
</wsdl:port>
<wsdl:port name="RiskAnalysisHttpsSoap12Endpoint" binding="tns:RiskAnalysisSoap12Binding">
<soap12:address location="https://addreshere/"/>
</wsdl:port>
</wsdl:service>
from zeep import Client
requestPayload = {'Attachment': inputQuery.encode() }
soapClient = Client('http://my-endpoint.com/production?wsdl', service_name=RiskAnalysis, port_name=RiskAnalysisHttpsSoap12Endpoint )
soapClient.client.service.OPERATIONS(**requestPayload)