views:

380

answers:

3

I'm using Python 2.6 and suds 0.3.7 to interact with Jira 4.0.

I connect to the jira server and and get information just fine. I.e., I can get all the details about any issue I want and that's great.

What's not so great is that when I want to update an issue, I get a SAXException from suds (presumably). The exception is:

WebFault: Server raised fault: 'org.xml.sax.SAXException: Found character data inside an array element while deserializing'

I'm following the steps described at http://confluence.atlassian.com/display/JIRA/Creating+a+SOAP+Client , only replacing SOAPpy calls with suds. My attempt to update an issue looks like this, complete with exceptions:

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

...And that's that. Has anyone seen a problem like this?

Thanks in advance!

+1  A: 

How about increasing the verbosity to see what is being sent? Or use wireshark. You could also do the same with SOAPpy and compare exactly what is sent. Debugging soap errors is usually like this for me :-/

~Matt

mdoar
I ended up using soappy... a little more to configure, but it worked great.
Chris
+1  A: 

Actually, by just changing the library from suds to SOAPpy, everything started working with no other modifications. Kind of annoying. I skipped SOAPpy because it seemed to have been abandoned and more complex to install, compared to suds. But SOAPpy works!

Thanks, all.

Chris
A: 

This will be solved if you switch to suds 3.0.9 (beta) ... the only one to have the fix.

n1r3