Python SOAP WSDL在SOAPpy中工作,但不是ZSI或zeep

Python SOAP WSDL在SOAPpy中工作,但不是ZSI或zeep

问题描述:

我需要一个可以处理多部分附件的python SOAP库。我的理解是,这不被SOAPpy或泡沫支持,但它是由ZSI和zeep支持的。然而,虽然SOAPpy对我需要使用的WSDL文件工作得很好,但ZSI和zeep给了我错误。这里是WSDL文件:http://nva1wss.webex.com/nbr/services/NBRStorageService?wsdl。我在SoapUI中打开文件,并使用“检查WSI合规性”选项,并通过了所有检查。Python SOAP WSDL在SOAPpy中工作,但不是ZSI或zeep

这里是我的错误:

zeep.exceptions.NamespaceError:无法解析类型{} NBRStorageService的DataHandler。名称空间u'NBRStorageService'没有可用的模式。

ZSI.generate.WsdlGeneratorError:无法为架构“NBRStorageService”找到可能缺少@schemaLocation属性的导入。

----更新的信息----

基于从ZEEP输出的详细我相信,随着WSDL的问题是,它使用一个数据类型ZEEP无法模式文档中解决在http://schemas.xmlsoap.org/soap/encoding/。以下是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似乎是使用Apache Axis 1.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> 

而且,BOOM!有用!我现在可以下载和处理附件,如下所述:http://docs.python-zeep.org/en/master/attachments.html