未找到 suds 类型:数组,http://www.w3.org/2001/XMLSchema

问题描述

我正在尝试迈出使用 SUDS、Python 创建 SOAP 客户端的第一步,但没有成功。

WSDL 在这里:https://login.keyinvoice.com/API3_ws.php?wsdl

代码:

from suds.client import Client
from suds.xsd.doctor import Import,ImportDoctor

imp = Import("http://schemas.xmlsoap.org/soap/encoding/",location="http://schemas.xmlsoap.org/soap/encoding/")
    
imp.filter.add("http://login.keyinvoice.com/soap/KI_API3")
client = Client("https://login.keyinvoice.com/API3_ws.php?wsdl",doctor=ImportDoctor(imp))

错误:

suds.TypeNotFound: Type not found: '(Array,http://www.w3.org/2001/XMLSchema,)'

我试过了,没有成功:

然后我尝试了一个 Node 库,它可以正常工作,但我无法使用它。

是不是 WSDL 被破坏了? ImportDoctor 的参数是错误的吗? SUDS 错误?

(Python 3.8.2,泡沫社区==0.8.5)

谢谢!

解决方法

WSDL 似乎有两种不同的方式来引用数组。一个是 xsd:array,另一个是 SOAP-ENC:Array。

xsd 定义为 xmlns:xsd="http://www.w3.org/2001/XMLSchema" 和 SOAP-ENC 定义为 xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap /编码/”。我确实在最后一个而不是第一个中找到了数组,但我不是 SOAP 专家。

所以用 SOAP-ENC:Array 替换每次出现的 xsd:Array 以某种方式解决它..我仍然不知道什么是错的:WSDL 或 SUDS 库。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...