[Fedora-suds-list] Suds not using UTF-8 encoding?

Joshua J. Kugler joshua at eeinternet.com
Mon Apr 5 18:52:02 UTC 2010


On Monday 05 April 2010, Jeff Ortel elucidated thus:
> On 04/03/2010 03:33 AM, Joshua J. Kugler wrote:
> > So, in my ongoing saga getting suds working with MS Exchange 2007
> > (which I'm sure you'll hear a lot more about before I'm done :) ),
> > I hit an a couple interesting snags.
> >
> > python-ntlm seems to time out against the server when doing POST
> > requests (but get requests seem fine).  But that's not the current
> > issue.
> >
> > When one of my requests went through, I got back this message:
> >
> > suds.WebFault: Server raised fault: 'Server was unable to process
> > request. --->  Input message does not conform to Simple SOAP
> > Binding Profile Version 1.0. Requirement R1012: A MESSAGE MUST
> > serialize the envelope using either UTF-8 or UTF-16 character
> > encoding.'
> >
> > I thought Suds encoded everything in UTF-8 be default.  The debug
> > output is below:
> >
> > DEBUG:suds.client:sending to (https://myserver/EWS/exchange.asmx)
> > message:
> > <SOAP-ENV:Envelope
> > xmlns:ns0="http://schemas.microsoft.com/exchange/services/2006/type
> >s" xmlns:ns1="http://schemas.xmlsoap.org/soap/envelope/"
> > xmlns:ns2="http://schemas.microsoft.com/exchange/services/2006/mess
> >ages" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> > xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
> >     <SOAP-ENV:Header/>
> >     <ns1:Body>
> >        <ns2:GetFolder>
> >           <ns2:FolderShape>
> >              <ns0:BaseShape>Default</ns0:BaseShape>
> >           </ns2:FolderShape>
> >           <ns2:FolderIds>
> >              <ns0:DistinguishedFolderId Id="inbox"/>
> >           </ns2:FolderIds>
> >        </ns2:GetFolder>
> >     </ns1:Body>
> > </SOAP-ENV:Envelope>
> > DEBUG:suds.client:headers = {'SOAPAction':
> > u'"http://schemas.microsoft.com/exchange/services/2006/messages/Get
> >Folder"', 'Content-Type': 'text/xml'}
> >
> > Should the fact that it's UTF-8 encoded be in the headers or
> > request somewhere like so:
>
> Suds probably should be setting the content-type http header as
> described in ticket 251. (https://fedorahosted.org/suds/ticket/251). 
> Can you try and let me know if this fixes your problem?

Weird, I use this code:

headers = {'Content-Type': 'text/xml; charset=utf-8'}
c = 
suds.client.Client('file:///home/jkugler/crc/local-tools/services.wsdl',
                       transport=ntlm,
                       headers=headers)

And Suds still tells me it's only sending 'text/xml' as the type.  
Leading to the same error.

DEBUG:suds.client:sending to (https://myserver/ews/exchange.asmx)
message:
<SOAP-ENV:Envelope 
xmlns:ns0="http://schemas.microsoft.com/exchange/services/2006/types" 
xmlns:ns1="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:ns2="http://schemas.microsoft.com/exchange/services/2006/messages" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
   <SOAP-ENV:Header/>
   <ns1:Body>
      <ns2:GetFolder>
         <ns2:FolderShape>
            <ns0:BaseShape>Default</ns0:BaseShape>
         </ns2:FolderShape>
         <ns2:FolderIds>
            <ns0:DistinguishedFolderId Id="inbox"/>
         </ns2:FolderIds>
      </ns2:GetFolder>
   </ns1:Body>
</SOAP-ENV:Envelope>
DEBUG:suds.client:headers = {'SOAPAction': 
u'"http://schemas.microsoft.com/exchange/services/2006/messages/GetFolder"', 'Content-Type': 'text/xml'}

In the failed message back from the server, it starts:

<?xml version="1.0" encoding="utf-8"?>

Is that what needs to be added?

j

>
> > <?xml version="1.0" encoding="UTF-8"?>
> >
> > Where is the errant behavior? Me? Suds? Exchange?
> >
> > j


-- 
Joshua Kugler
Part-Time System Admin/Programmer
http://www.eeinternet.com
PGP Key: http://pgp.mit.edu/  ID 0x73B13B6A


More information about the suds mailing list