From: Ib Lundgren Date: Tue, 21 May 2013 08:46:28 +0000 (+0100) Subject: Only pass unicode fieldnames to urllib3. X-Git-Tag: v1.2.2~2^2~1^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=003c795afed5f3b12c3ea8af12affbeb1218d7da;p=services%2Fpython-requests.git Only pass unicode fieldnames to urllib3. --- diff --git a/requests/models.py b/requests/models.py index 5571630..db898bc 100644 --- a/requests/models.py +++ b/requests/models.py @@ -105,7 +105,7 @@ class RequestEncodingMixin(object): for v in val: if v is not None: new_fields.append( - (field.encode('utf-8') if isinstance(field, str) else field, + (field.decode('utf-8') if isinstance(field, bytes) else field, v.encode('utf-8') if isinstance(v, str) else v)) for (k, v) in files: diff --git a/test_requests.py b/test_requests.py index aabce29..2b5f231 100644 --- a/test_requests.py +++ b/test_requests.py @@ -342,6 +342,16 @@ class RequestsTestCase(unittest.TestCase): files={'file': ('test_requests.py', open(__file__, 'rb'))}) self.assertEqual(r.status_code, 200) + def test_unicode_multipart_post_fieldnames(self): + r = requests.Request(method='POST', + url=httpbin('post'), + data={'stuff'.encode('utf-8'): 'elixr'}, + files={'file': ('test_requests.py', + open(__file__, 'rb'))}) + prep = r.prepare() + self.assertTrue(b'name="stuff"' in prep.body) + self.assertFalse(b'name="b\'stuff\'"' in prep.body) + def test_custom_content_type(self): r = requests.post(httpbin('post'), data={'stuff': json.dumps({'a': 123})},