我有一组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]
如果有帮助,尽管该错误消息包含一些特定于我正在调试的生成类的字符串。
答案 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))
再次运行它,看看发生了什么。