我正在尝试使用Python和suds库从容纳我的数据的SOAP Web服务中提取一些数据。不幸的是,我之前没有通过SOAP Web服务做到这一点,并且遇到了一些混乱。这是我到目前为止的代码:
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错误。因此,我很难调试并发现我做错了什么。我怀疑它与我尝试使用suds的工厂创建的复杂请求类型有关。任何人都对我在这里做错了什么有所了解?
答案 0 :(得分: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)
基本上,您的服务签名不是一个复杂的类型,所以我猜您没有正确地调用您的服务。