我很難獲得基於suds的python SOAP客戶端來解析響應:客戶端構建正確並解析WSDL就好了。據我所見,WSDL中沒有導入,所以這看起來不像典型的ImportDoctor
問題。從WSDLSuds:在響應中找不到類型
相關位:
<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服務返回一個數組的FontType
對象(即FontType[]
),如getFontResponse
方法,但未能定義FontType[]
類型,並且僅描述FontType
。
任何幫助解決這個將不勝感激。
唯一能想到的就是添加調試日誌並在其中搜索某處。順便說一下,你可以在這裏粘貼suds客戶端和傳輸日誌輸出 - 這可能會有所幫助。 – Gandi 2011-04-20 12:54:27