pythonsoapwsdl在SOAPpy中工作,而不是ZSI或zeep

2024-04-24 17:02:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要一个可以处理多部分附件的pythonsoap库。我的理解是,这不是SOAPpy或suds支持的,而是ZSI和zeep支持的。然而,虽然SOAPpy可以很好地处理我需要使用的WSDL文件,但是ZSI和zeep会给我错误。这是WSDL文件:http://nva1wss.webex.com/nbr/services/NBRStorageService?wsdl。我在SoapUI中打开了这个文件,并使用了“checkwsi Compliance”选项,它通过了所有的检查。在

以下是我的错误:

在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似乎是用apacheaxis1.4生成的。在

有什么办法解决这个问题吗?或者,如果有人对服务器端的更改有任何具体的建议,我不能提出,但我可以肯定地将它们传达给处理服务器的开发人员。在

谢谢你!在


Tags: 文件orgcomhttp错误servicewsdlwebex
1条回答
网友
1楼 · 发布于 2024-04-24 17:02:24

好吧。我修好了!在

所以,我做了一些挖掘,发现这是Axis生成的WSDL的一个常见问题。它应该在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>

然后,砰!它起作用了!我现在可以下载并处理这里描述的附件:http://docs.python-zeep.org/en/master/attachments.html

相关问题 更多 >