微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决未找到 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 库。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。