首页 > 解决方案 > 未找到 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 lib,它可以正常工作,但我不能使用它。

是 WSDL 坏了吗?ImportDoctor 的参数是否错误?SUDS 错误?

(Python 3.8.2,suds-community==0.8.5)

谢谢!

标签: pythonsoapwsdlsuds

解决方案


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

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

因此,用 SOAP-ENC:Array 替换每次出现的 xsd:Array 以某种方式解决了它。我仍然不知道出了什么问题:WSDL 或 SUDS 库。


推荐阅读