Suds + JIRA = SAXException

时间:2009-10-22 20:09:58

标签: python soap jira suds

我正在使用Python 2.6和suds 0.3.7与JIRA 4.0进行交互。

当我连接到JIRA服务器时,我可以获得有关所有问题的信息。

然而,当我想更新一个问题时,我从suds得到一个SAXException(大概):

  

WebFault:服务器引发的错误:   org.xml.sax.SAXException:在反序列化时在数组元素中找到字符数据

我正在按照此处描述的步骤进行操作:http://confluence.atlassian.com/display/JIRA/Creating+a+SOAP+Client

仅用suds替换SOAPpy调用。

我尝试更新问题的方法如下:完成例外情况:

 >>> w="http://bugs/rpc/soap/jirasoapservice-v2?wsdl"
 >>> from suds.client import Client
 >>> client = Client(w)
 >>> auth = client.service.login("myname","mypass")
 >>> issue = client.service.getIssue(auth,"BUG-30112")
 >>> issue.summary
 This is the original summary for BUG-30112
 >>> 
 >>> client.service.updateIssue(auth,"BUG-30112",[
 ...            {"id":"summary","values":["My new summary"]}])

 Traceback (most recent call last):
   File "<interactive input>", line 2, in <module>
   File "C:\Python26\lib\suds\client.py", line 535, in __call__
     return client.invoke(args, kwargs)
   File "C:\Python26\lib\suds\client.py", line 595, in invoke
     result = self.send(msg)
   File "C:\Python26\lib\suds\client.py", line 630, in send
     result = self.failed(binding, e)
   File "C:\Python26\lib\suds\client.py", line 681, in failed
     r, p = binding.get_fault(reply)
   File "C:\Python26\lib\suds\bindings\binding.py", line 235, in get_fault
     raise WebFault(p, faultroot)
 WebFault: Server raised fault: 'org.xml.sax.SAXException: Found character data inside an array element while deserializing'
 >>>

有没有人见过这样的问题?

3 个答案:

答案 0 :(得分:1)

如何增加详细程度以查看发送的内容?或者使用wireshark。您也可以对SOAPpy执行相同的操作,并准确比较发送的内容。调试soap错误对我来说通常是这样的: - /

〜马特

答案 1 :(得分:1)

实际上,只需将库从suds更改为SOAPpy,一切都开始工作,没有其他修改。有点烦人。我跳过了SOAPpy,因为与suds相比,它似乎已被放弃并且安装起来更复杂。但是SOAPpy有效!

谢谢,所有。

答案 2 :(得分:1)

如果你切换到suds 3.0.9(beta)......这是唯一一个有修复的人,这将会解决。