2015-10-20 50 views
0

我正在嘗試使用Python和suds庫從SOAP web服務中提取一些數據,這些數據存放我的數據。不幸的是,我之前沒有通過SOAP Web服務完成這項工作,並且遇到了一些困惑。這裏是我到目前爲止的代碼:Python Suds複雜類型混淆

from suds.client import Client 
wsdl = 'http://ws-argos.clsamerica.com/argosDws/services/DixService?wsdl' 
client =Client(wsdl) 
f1 = client.factory.create('ns0:baseRequestType') 
f1.username ='xxxxx' 
f1.password='xxxxx' 
f1.programNumber='9999' 
f1.nbDaysFromNow = '5' 
print f1 
print client.service.getObsCsv(f1) 

運行此代碼給我一個通用的WebFault錯誤。因此,我很難調試並發現我做錯了什麼。我懷疑它與我試圖用工廠生成的複雜請求類型有關。任何人都可以洞察我在這裏做錯了什麼?

回答

0

作爲一個有點的n00b我自己,我想我可以告訴你,至少貢獻了getObsCsv()服務的簽名並不要求一個BaseRequestType對象但這些都是基本類型單個值:

getObsCsv(xs:string username, xs:string password, xs:string programNumber, xs:string platformId, xs:string wmo, xs:int nbMaxObs, ns0:periodType period, xs:int nbDaysFromNow) 

如果那樣,打印使用客戶端:

print client 

將產生的簽名是這樣一個在方法列表:

getObsCsv(baseRequestType baseRequestType) 

基本上,您的服務簽名不期望複雜的類型,所以我想你沒有正確地調用你的服務。