fix for post non-dict data
authormegane murayama <meganemurayama@gmail.com>
Thu, 12 May 2011 16:50:09 +0000 (12:50 -0400)
committermegane murayama <meganemurayama@gmail.com>
Thu, 12 May 2011 16:50:09 +0000 (12:50 -0400)
requests/core.py
test_requests.py

index 40f4c8e0e4240b06b1aa7b0a61df5941c38e3f30..69d0f3f728eef5b00cd0427f595b8befbc26f11b 100644 (file)
@@ -69,18 +69,17 @@ class Request(object):
         self.headers = headers
         self.files = files
         self.method = method
-
         self.data = {}
-        for (k, v) in data.items():
-            self.data.update({
-                k.encode('utf-8') if isinstance(k, unicode) else k:
-                v.encode('utf-8') if isinstance(v, unicode) else v
-            })
 
         socket.setdefaulttimeout(timeout)
 
-        # url encode data if it's a dict
         if hasattr(data, 'items'):
+            for (k, v) in data.items():
+                self.data.update({
+                    k.encode('utf-8') if isinstance(k, unicode) else k:
+                    v.encode('utf-8') if isinstance(v, unicode) else v
+                })
+            # url encode data if it's a dict
             self._enc_data = urllib.urlencode(self.data)
         else:
             self._enc_data = self.data
index 89b69acd02568416a05a2533bfcb692de167d6ab..ecd017728f21aecdb36f1bd92249285ac015d859 100755 (executable)
@@ -79,6 +79,9 @@ class RequestsTestSuite(unittest.TestCase):
         post2 = requests.post(bin.url, files={'some': open('test_requests.py')})
         self.assertEqual(post2.status_code, 201)
 
+        post3 = requests.post(bin.url, data='[{"some": "json"}]')
+        self.assertEqual(post.status_code, 201)
+
     def test_POSTBIN_GET_POST_FILES_WITH_PARAMS(self):
         bin = requests.post('http://www.postbin.org/')