pythonsoapsdl在SOAPpy中工作,但在ZSI或zeep中不工作

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

我需要一个能够处理多部分附件的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中的数据类型定义:

<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>
还有,轰!它起作用了!我现在可以下载和处理附件,如下所述: