2

我有一组 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 unbounded, expecting a [<type 'tuple'>, <type 'list'>] [Element trace: /SOAP-ENV:Body/ns1:customer_add_request]

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

4

1 回答 1

0

您肯定以错误的方式使用生成的类/类型。由于消息表明“_customer_address_data”需要一个序列,它毕竟是无界的。由于您没有显示您的 WSDL 文件或生成的 cals,我您传递的值具有错误的数据类型。我建议您更改 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))

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

于 2013-08-10T12:11:17.813 回答