WDSL文件包含操作但是zeep“给服务没有操作错误”

时间:2017-05-12 12:49:47

标签: python python-2.7 soap wsdl zeep

我试图在wsdl中调用该操作。我无法共享完整的文件,但这里有一个文件示例 -

<wsdl:operation name="XXX_XXX_CANCEL"><wsp:Policy><wsp:PolicyReference URI="#OP_XXX_XXX_CANCEL"/></wsp:Policy><wsdl:input message="p1:XXX_Order"/><wsdl:output message="p1:Order_RESP"/></wsdl:operation></wsdl:portType><wsdl:binding name="XXX_XXX_CANCELBinding" type="p1:XXX_XXX_CANCEL"><soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/><wsdl:operation name="XXX_XXX_CANCEL"><soap:operation soapAction="http://sap.com/xi/WebService/soap1.1" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/><wsdl:input><soap:body use="literal" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/></wsdl:input><wsdl:output><soap:body use="literal" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/></wsdl:output></wsdl:operation></wsdl:binding><wsdl:service name="XXX_XXX_CANCELService"><wsdl:port name="XXX_XXX_CANCELPort" binding="p1:XXX_XXX_CANCELBinding"><soap:address location="x" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/></wsdl:port></wsdl:service></wsdl:definitions>""

如果我在该文件上python -mzeep xxx.wsdl,我会看到服务和端口,但没有任何操作,在尝试拨打服务时,我得到service has no operation XXX_XXX_Cancel

我无法弄清楚为什么会这样。

2 个答案:

答案 0 :(得分:1)

可能是在尝试解析操作类型/元素时发生错误的情况。在那种情况下,你会发出警告。你有python -mzeep的完整输出吗? (见前几行)

答案 1 :(得分:0)

zeep软件包存在问题。如果操作使用嵌套元素和普通元素。它将仅列出嵌套的那些服务。可以使用pdb.set_trace进行检查并调用dir(client.service)。

它将仅列出wsdl中具有嵌套元素的那些服务。