这个ZSI错误意味着什么,我该如何调试它?

时间:2013-08-05 03:05:52

标签: python soap zsi

我有一组Python类,我是从带有ZSI的WSDL为SOAP服务生成的。我有另一个Python模块,使用这些生成的类调用SOAP服务。不幸的是,代码在运行时不断抛出EvaluateException并出现以下错误消息:

  

maxOccurs无限制,期待[< type'tuple'>,< type'list'>]

不幸的是,我既不是SOAP专家也不是ZSI专家,我甚至无法弄清楚这个错误意味着什么。有谁知道它试图描述什么问题,以及我如何解决(或至少调试)它?这条消息对我来说没什么意义。


EvaluateException中的确切错误消息是

  

pyobj(http://Think/XmlWebServices/,customer_data),aname“_customer_address_data”:maxOccurs无限制,期待[< type'tuple'>,< type'list'>]   [元素跟踪:/ SOAP-ENV:Body / ns1:customer_add_request]

如果有帮助,尽管该错误消息包含一些特定于我正在调试的生成类的字符串。

1 个答案:

答案 0 :(得分:0)

您肯定以错误的方式使用生成的类/类型。如消息所示 “_customer_address_data”需要一个序列,毕竟它是无界的。 由于您没有显示您的WSDL文件或生成的calss,我您正在传递 数据类型错误的值。 我建议您更改ZSI中的TCcompound.py文件以打印出您的数据 像这样的东西(在你的ZSI版本中找到“def cb”):

        whatTC = what
        if whatTC.maxOccurs > 1 and v is not None:
            if type(v) not in _seqtypes:
                raise EvaluateException('pyobj (%s,%s), aname "%s": maxOccurs %s, expecting a %s got %s instead' %(
                     self.nspname,self.pname,what.aname,whatTC.maxOccurs,_seqtypes, type(v)),
                     sw.Backtrace(elt))

再次运行它,看看发生了什么。