[Fwd: Re: [Fedora-suds-list] Exception in unmarshaller]

Jeff Ortel jortel at redhat.com
Wed Jun 11 15:21:30 UTC 2008


Meant to CC the list on reply.  Cameron, sorry for the dup.

-------- Original Message --------
Subject: Re: [Fedora-suds-list] Exception in unmarshaller
Date: Wed, 11 Jun 2008 11:18:26 -0400
From: Jeff Ortel <jortel at redhat.com>
To: Cameron Morrison <cameron.am at gmail.com>
References: <611cee900806110704o27715994v661fe4998629a680 at mail.gmail.com>

Hey Cameron,

The GetRecordingsResponse is a tns:ServiceResponse:

<s:complexType name="ServiceResponse">
         <s:sequence>
           <s:element minOccurs="1" maxOccurs="1" name="status"
type="tns:Status" />
           <s:element minOccurs="0" maxOccurs="1" name="result">
             <s:complexType>
               <s:sequence>
                 <s:any processContents="lax" />
               </s:sequence>
             </s:complexType>
           </s:element>
         </s:sequence>
       </s:complexType>

which defines the content of <result/> to be a sequence of xs:any which
is not supported until 0.2.2 which I plan to commit to trunk sometime
this week (I hope) and release in a few weeks.

You may want to try an older version of suds.  The unmarshaller has
gotten smarter over the past couple of releases.  Id suggest trying the
0.1.7 which used a blind unmarhsaller for document/literal which didn't
perform any schema lookups.  It should unmarshall anything ;-)

Please let me know how you make out.

Regards,

Jeff

Cameron Morrison wrote:
> Hi,
> 
> I am trying to call the service GetRecordings(...) defined in the
> attached wsdl, like so:
> 
> ---
> #!/bin/python
> 
> from suds.client import Client
> from suds import *
> 
> logger('suds.serviceproxy').setLevel(logging.DEBUG)
> 
> client = Client('http://localhost:2048/services/Recording.asmx?WSDL',
> faults=False, proxy={'http':'localhost:8888'})
> print client.service.GetRecordings('FilterBySong', 'None', 1, 10, '2')
> ---
> 
> The call works, and the following xml is returned:
> 
> ---
> <?xml version="1.0" encoding="utf-8"?>
> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema">
>     <soap:Body>
>         <GetRecordingsResponse xmlns="http://tempuri.org/">
>             <GetRecordingsResult>
>                 <status>Success</status>
>                 <result>
>                     <recordings count="4" total="4" xmlns="">
>                         <recording id="317879" Votes="0" comments="0"
> soundId="2">
>                             <p1name><![CDATA[rob1]]></p1name>
>                             <p2name><![CDATA[rob2]]></p2name>
>                             <voice1Url>v1url</voice1Url>
>                             <voice2Url>v2url</voice2Url>
>                         </recording>
>                         <recording id="317878" Votes="0" comments="0"
> soundId="2">
>                             <p1name><![CDATA[cam1]]></p1name>
>                             <p2name><![CDATA[cam2]]></p2name>
>                             <voice1Url>v1url</voice1Url>
>                             <voice2Url>v2url</voice2Url>
>                         </recording>
>                         <recording id="317877" Votes="0" comments="0"
> soundId="2">
>                             <p1name><![CDATA[rob1]]></p1name>
>                             <p2name><![CDATA[cam1]]></p2name>
>                             <voice1Url>v1url</voice1Url>
>                             <voice2Url>v2url</voice2Url>
>                         </recording>
>                         <recording id="317876" Votes="0" comments="0"
> soundId="2">
>                             <p1name><![CDATA[Cam]]></p1name>
>                             <p2name><![CDATA[Rob]]></p2name>
>                             <voice1Url>Cams voice</voice1Url>
>                             <voice2Url>Robs voice</voice2Url>
>                         </recording>
>                     </recordings>
>                 </result>
>             </GetRecordingsResult>
>         </GetRecordingsResponse>
>     </soap:Body>
> </soap:Envelope>
> ---
> 
> ... but the unmarshaller is throwing an exception when trying to
> process the recordings element of the returned document:
> 
> ---
> 2008-06-11 09:41:58,250 {2796} (resolver.py, 167) [ERROR] (recordings) not-found
> Traceback (most recent call last):
>   File "./test_driver.py", line 15, in <module>
>     print client.service.GetRecordings('FilterBySong', 'None', 1, 10, '2')
>   File "build/bdist.cygwin-1.5.25-i686/egg/suds/client.py", line 145,
> in __call__
>   File "build/bdist.cygwin-1.5.25-i686/egg/suds/client.py", line 258, in send
>   File "build/bdist.cygwin-1.5.25-i686/egg/suds/client.py", line 305,
> in succeeded
>   File "build/bdist.cygwin-1.5.25-i686/egg/suds/bindings/binding.py",
> line 86, in get_reply
>   File "build/bdist.cygwin-1.5.25-i686/egg/suds/bindings/binding.py",
> line 111, in unmarshal
>   File "build/bdist.cygwin-1.5.25-i686/egg/suds/bindings/unmarshaller.py",
> line 73, in process
>   File "build/bdist.cygwin-1.5.25-i686/egg/suds/bindings/unmarshaller.py",
> line 91, in __process
>   File "build/bdist.cygwin-1.5.25-i686/egg/suds/bindings/unmarshaller.py",
> line 122, in import_children
>   File "build/bdist.cygwin-1.5.25-i686/egg/suds/bindings/unmarshaller.py",
> line 91, in __process
>   File "build/bdist.cygwin-1.5.25-i686/egg/suds/bindings/unmarshaller.py",
> line 122, in import_children
>   File "build/bdist.cygwin-1.5.25-i686/egg/suds/bindings/unmarshaller.py",
> line 89, in __process
>   File "build/bdist.cygwin-1.5.25-i686/egg/suds/bindings/unmarshaller.py",
> line 275, in start
> suds.TypeNotFound: WSDL type: recordings not-found
> ---
> 
> The "recordings" element is not specified in the WSDL - the Result
> field of a ServiceResponse is intended to be arbitrarly formatted xml
> - is there any way that Suds can handle this?
> 
> Cheers,
> Cameron
> 
> ps. the service is internal, so I am unable to provide a test url, sorry!
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> fedora-suds-list mailing list
> fedora-suds-list at redhat.com
> https://www.redhat.com/mailman/listinfo/fedora-suds-list





More information about the suds mailing list