pythonsoapsdl在SOAPpy中工作,但在ZSI或zeep中不工作
我需要一个能够处理多部分附件的python SOAP库。我的理解是,SOAPpy或suds不支持这一点,但ZSI和zeep支持这一点。然而,虽然SOAPpy可以很好地处理我需要使用的WSDL文件,但是ZSI和zeep给了我错误。以下是WSDL文件:。我在SoapUI中打开了该文件,并使用了Check WSI Compliance选项,它通过了所有检查 以下是我的错误: zeep.exceptions.NamespaceError:无法解析类型{NBRStorageService}DataHandler。没有可用于命名空间u'NBRStorageService'的架构 ZSI.generate.WsdlGeneratorError:未能找到架构NBRStorageServices的导入,可能缺少@schemaLocation属性 --更新信息-- 基于zeep的详细输出,我认为WSDL的问题在于它使用的数据类型是zeep无法在当前的模式文档中解决的。以下是WSDL中的数据类型定义:pythonsoapsdl在SOAPpy中工作,但在ZSI或zeep中不工作,python,soap,wsdl,zeep,zsi,Python,Soap,Wsdl,Zeep,Zsi,我需要一个能够处理多部分附件的python SOAP库。我的理解是,SOAPpy或suds不支持这一点,但ZSI和zeep支持这一点。然而,虽然SOAPpy可以很好地处理我需要使用的WSDL文件,但是ZSI和zeep给了我错误。以下是WSDL文件:。我在SoapUI中打开了该文件,并使用了Check WSI Compliance选项,它通过了所有检查 以下是我的错误: zeep.exceptions.NamespaceError:无法解析类型{NBRStorageService}DataHand
<wsdl:types>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="https://nva1wss.webex.com/nbr/services/NBRStorageService">
<import namespace="NBRStorageService"/>
<import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
<complexType name="ArrayOf_tns1_DataHandler">
<complexContent>
<restriction base="soapenc:Array">
<attribute ref="soapenc:arrayType"
wsdl:arrayType="tns1:DataHandler[]"/>
</restriction>
</complexContent>
</complexType>
</schema>
</wsdl:types>
此WSDL似乎是使用ApacheAxis1.4生成的
关于如何解决这个问题有什么想法吗?或者,如果有人对服务器端的更改有任何具体的建议,我无法提出,但我肯定可以将它们传达给处理服务器的开发人员
谢谢大家! 好的。我修好了
所以,我做了一些挖掘,发现这是Axis生成的WSDL的常见问题。DataHandler类型不应位于tns1命名空间中。它应该位于apachesoap名称空间中。因此,我更改了WSDL中的名称空间,但它仍然不起作用
所以,我做了更多的挖掘,发现“DataHandler是一种平台特定的类型,除了Axis之外,其他平台都不会理解”,解决方法是将其更改为字节类型
下面是我在本地修改的WSDL部分,现在正在使用:
<wsdl:types>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="https://nva1wss.webex.com/nbr/services/NBRStorageService">
<import namespace="NBRStorageService"/>
<import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
<complexType name="ArrayOf_tns1_DataHandler">
<complexContent>
<restriction base="soapenc:Array">
<attribute ref="soapenc:arrayType"
wsdl:arrayType="soapenc:byte[]"/>
</restriction>
</complexContent>
</complexType>
</schema>
</wsdl:types>
还有,轰!它起作用了!我现在可以下载和处理附件,如下所述: