On 26 May, 10:52 pm, [email protected] wrote:
>Hi,
>
>I'm having a problem putting binary data into a body of http response
>using twisted web.I'm doing something very wrong, any help is
>appreciated. The funny thing is that it runs on python2.7, but fails
>on python2.5. Most probably it has something to do with unicode/str.
>
>Code snipplet:
>-------
>def render_GET(self, request):
>    # get contents of a binary file, e.g. zip archive
>    request.setHeader('Content-type', 'some-mime')
>    return content
>-----

I'm not sure why you get different behavior on Python 2.5 vs Python 2.7. 
You can certainly put any data you want, including "binary" (that is, 
non-ASCII) bytes.
>
>This results in a error:
>
>        exceptions.UnicodeDecodeError: 'ascii' codec can't decode byte
>0x92 in position 10: ordinal not in range(128)

This error does suggest that a unicode object has gotten into the send 
buffer somehow.  Check to make sure the content you returned from 
render_GET is of type `str` and that all of the header names and values 
that you set are also of type `str`.  A `unicode` object slipping in to 
one of those places is the most likely cause of this problem.

Jean-Paul

_______________________________________________
Twisted-web mailing list
[email protected]
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-web

Reply via email to