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, )'

I've try, with no success:

  • "http://www.w3.org/2001/XMLSchema"作为Import类
  • 的参数
  • 类型未找到:'(schema, http://www.w3.org/2001/XMLSchema,)
  • https://github.com/unomena/suds/issues/2
  • Zeep witch也不能完全工作(它不能构建"authenticate"方法)。

然后我尝试了一个Node库,它只是工作,但我不能使用它。

是WSDL坏了吗?ImportDoctor的参数不好吗?肥皂水虫?

(Python 3.8.2, sads -community==0.8.5)

谢谢!

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

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

所以用SOAP-ENC:Array替换xsd:Array在某种程度上解决了这个问题。我还是不知道哪里出了问题:是WSDL还是SUDS库。

相关内容

最新更新