【问题标题】:suds Type not found: Array, http://www.w3.org/2001/XMLSchema未找到 suds 类型:数组,http://www.w3.org/2001/XMLSchema
【发布时间】:2021-07-29 13:02:51
【问题描述】:

我正在尝试用 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)

谢谢!

【问题讨论】:

标签: python soap wsdl suds


【解决方案1】:

似乎 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 /编码/”。我确实在最后一个而不是第一个中找到了该数组,但我不是 SOAP 专家。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-16
    • 2013-06-10
    • 2014-05-30
    • 1970-01-01
    相关资源
    最近更新 更多