Fix of UnicodeDecodeError on unicode header name that can be converted to ascii.
authorDenis Ryzhkov <denisr@denisr.com>
Mon, 11 Feb 2013 12:37:58 +0000 (15:37 +0300)
committerDenis Ryzhkov <denisr@denisr.com>
Mon, 11 Feb 2013 12:37:58 +0000 (15:37 +0300)
AUTHORS.rst
requests/models.py
test_requests.py

index 078ed993be0c0779b14240c5094bb48598de0860..6bbddfde06a5b9b7fd34955fa3b41eb1428c3d29 100644 (file)
@@ -120,3 +120,4 @@ Patches and Suggestions
 - David Bonner <dbonner@gmail.com> @rascalking
 - Vinod Chandru
 - Johnny Goodnow <j.goodnow29@gmail.com>
+- Denis Ryzhkov <denisr@denisr.com>
index a845b44e30dfddcf7344c58b7eb91ef17ad73dde..2ca5faa40ff1b741589427db407553a4e6fe694e 100644 (file)
@@ -325,6 +325,8 @@ class PreparedRequest(RequestEncodingMixin, RequestHooksMixin):
         """Prepares the given HTTP headers."""
 
         if headers:
+            if is_py2:
+                headers = dict((builtin_str(name), value) for name, value in headers.items())
             self.headers = CaseInsensitiveDict(headers)
         else:
             self.headers = CaseInsensitiveDict()
index 6c4c3dd21414ef675f917c49329a55f0a08c2712..e506ffaecf551f2df7ab99cb7a9587537628afe8 100644 (file)
@@ -10,7 +10,7 @@ import unittest
 
 import requests
 from requests.auth import HTTPDigestAuth
-from requests.compat import str
+from requests.compat import is_py2, str
 
 try:
     import StringIO
@@ -251,6 +251,10 @@ class RequestsTestCase(unittest.TestCase):
         requests.get(url, params={'foo': 'foo'})
         requests.get(httpbin('ΓΈ'), params={'foo': 'foo'})
 
+    def test_unicode_header_name(self):
+        if is_py2:
+            requests.put(httpbin('put'), headers={unicode('Content-Type'): 'application/octet-stream'}, data='\xff')
+
     def test_urlencoded_get_query_multivalued_param(self):
 
         r = requests.get(httpbin('get'), params=dict(test=['foo', 'baz']))