2013-08-05 87 views
2

我有一套Python类,它们是通过ZSI为WSDL生成的SOAP服务生成的。我有另一个Python模块使用这些生成的类来调用SOAP服务。不幸的是,在运行时该代码保持与下面的错误消息抛出EvaluateException这个ZSI错误是什么意思,我该如何调试?

maxOccurs的无界的,期待[<类型 '元组' >,<类型 '列表' >]

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


EvaluateException确切的错误信息是

pyobj(http://Think/XmlWebServices/,CUSTOMER_DATA),aname “_customer_address_data”:maxOccurs的无界的,期待[<类型 '元组' >,<类型“列表“>] [元素跟踪:/ SOAP-ENV:身体/ NS1:customer_add_request]

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

+0

[那些ZSI错误是一个难以理解的](http://stackoverflow.com/questions/14059142/create-python-soap-server-based-on-wsdl/14081698#14081698)。 +1祝你好运。 – Bogdan

+0

ZSI代码库上的简单'grep'显示的异常是在这里http://pywebsvcs.svn.sourceforge.net/viewvc/pywebsvcs/trunk/zsi/ZSI/TCcompound.py?revision=1502&view=markup on line 373。它看起来像你试图发送错误的参数到SOAP服务。 – twil

回答

0

您当然在以错误的方式使用生成的类/类型。由于该消息指示 “_customer_address_data”需要一个序列,因此它是无限的。 既然你还没有显示你的WSDL文件或生成的calss,我你正在通过 一个错误的数据类型的值。 我建议你改变ZSI的TCcompound.py文件打印出您的数据,这将是 这样的事情(找到“高清CB”在ZSI版本):再次

 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)) 

来看,它并看看发生了什么。