【问题标题】:Python Suds complex types confusionPython Suds 复杂类型混淆
【发布时间】:2015-10-20 20:02:36
【问题描述】:

我正在尝试使用 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 创建的复杂请求类型有关。任何人都知道我在这里做错了什么?

【问题讨论】:

    标签: python web-services soap suds


    【解决方案1】:

    作为一个有点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)
    

    基本上,您的服务签名并不需要复杂类型,所以我猜您没有正确调用您的服务。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多