Suds:在响应中找不到类型

| 我很难获得基于suds的python SOAP客户端来解析响应:客户端构造正确并且可以很好地解析WSDL。据我所知,WSDL中没有导入,因此这似乎不是典型的“ 0”问题。 WSDL中的相关位:
        <xsd:complexType name=\"getFontsRequest\">
            <xsd:sequence>
                <xsd:element name=\"UserID\" type=\"xsd:int\" maxOccurs=\"1\" minOccurs=\"1\"></xsd:element>
                <xsd:element name=\"TAWSAccessKey\" type=\"xsd:string\" maxOccurs=\"1\" minOccurs=\"1\"></xsd:element>
            </xsd:sequence>
        </xsd:complexType>

        <xsd:complexType name=\"getFontsResponse\">
            <xsd:sequence>
                <xsd:element name=\"UserID\" type=\"xsd:int\"></xsd:element>
                <xsd:element name=\"Status\" type=\"xsd:string\"></xsd:element>
                <xsd:element name=\"Fonts\" type=\"tns:FontType[]\"></xsd:element>
            </xsd:sequence>
        </xsd:complexType>

        <xsd:complexType name=\"FontType\">
            <xsd:sequence>
                <xsd:element name=\"ID\" type=\"xsd:int\"></xsd:element>
                <xsd:element name=\"Name\" type=\"xsd:string\"></xsd:element>
            </xsd:sequence>
        </xsd:complexType>
我的代码:
    self.soap_client = Client(settings.WSDL_URL)
    self.factory = self.soap_client.factory
    self.service = self.soap_client.service
    # ...
    getFontsRequest = self.factory.create(\'getFontsRequest\')
    getFontsRequest.UserID = settings.WS_UID
    getFontsRequest.TAWSAccessKey = settings.WS_KEY

    self.service.getFonts(getFontsRequest)
最后一行抛出此异常:
...
File \"/usr/local/Cellar/python/2.7.1/lib/python2.7/site-packages/suds/xsd/sxbasic.py\", line 63, in resolve
raise TypeNotFound(qref)
TypeNotFound: Type not found: \'(FontType[], http://www.type-applications.com/character_set/, )\'
我的理解是,Web服务返回了ѭ6specified方法中指定的
FontType
对象(即
FontType[]
)数组,但未能定义
FontType[]
类型,仅描述了
FontType
。 任何解决此问题的帮助将不胜感激。     
已邀请:
可能是“ 0”的工作。跨损坏的WSDL运行是令人惊讶的普遍现象。 尝试这个:
from suds.client import Client
from suds.xsd.doctor import Import, ImportDoctor

wsdl_url = settings.WSDL_URL

# Fix missing types with ImportDoctor
schema_url = \'http://www.type-applications.com/character_set/\'
schema_import = Import(schema_url)
schema_doctor = ImportDoctor(schema_import)

# Pass doctor to Client
client = Client(url=wsdl_url, doctor=schema_doctor)
    
通过联系WSDL提供程序并要求他修复(损坏的)WSDL,已解决了该问题。不幸的是,我没有意识到任何基于代码的解决方案。     

要回复问题请先登录注册