2015-10-20 49 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) 

基本上,您的服务签名不期望复杂的类型,所以我想你没有正确地调用你的服务。