如何解决未找到 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,)'
我试过了,没有成功:
- “http://www.w3.org/2001/XMLSchema”作为导入类中的参数
- Type not found: '(schema,)
- https://github.com/unomena/suds/issues/2
- Zeep 女巫也不能完全工作(它没有构建“身份验证”方法)。
然后我尝试了一个 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 举报,一经查实,本站将立刻删除。