首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >改变zeep结合

改变zeep结合
EN

Stack Overflow用户
提问于 2019-01-21 08:37:45
回答 2查看 1.8K关注 0票数 1

我试图连接到一个soap端点,它定义了2个服务位置,其中一个无效。如何更改绑定以使用其他服务。我刚接触过SOAP和他说医生zeep

代码语言:javascript
复制
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)

但它并没有提到什么是争论。

我的服务被定义为:

代码语言:javascript
复制
<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')和and:

代码语言:javascript
复制
ValueError: Service not found

此外,如果你知道任何好的文件,我能读,如果你推荐它,我会很高兴。

更新我找到了正确的语法

代码语言:javascript
复制
client.bind('PackageInq', 'BasicHttpsBinding_IPackageInq') 

但在使用的时候

代码语言:javascript
复制
client.service.Method()

再次命中无效端点。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-21 09:48:07

在更仔细地阅读文档之后,client.bind返回一个service,您应该使用它,而不是客户机。

所以应该是喜欢

代码语言:javascript
复制
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)
票数 2
EN

Stack Overflow用户

发布于 2021-06-21 16:10:47

zeep版本4.0.0。

代码语言:javascript
复制
         <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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54286042

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档