From 9ff2e43cd6de340c152145adc0e922f94e0aaf1c Mon Sep 17 00:00:00 2001 From: Jesse Shapiro Date: Thu, 5 May 2016 06:27:12 -0400 Subject: [PATCH] Removing charset from JSON content type; tightening requirements on .encode() --- requests/models.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/requests/models.py b/requests/models.py index 05ec3e47..2341c1b8 100644 --- a/requests/models.py +++ b/requests/models.py @@ -423,8 +423,10 @@ class PreparedRequest(RequestEncodingMixin, RequestHooksMixin): # When urllib3 uses pyOpenSSL, it can only resume large uploads # properly if receiving a bytes-like object. In Python 2, json.dumps() # returns just that, but Python 3 returns a Unicode string. - content_type = 'application/json; charset=utf-8' - body = complexjson.dumps(json).encode('utf-8') + content_type = 'application/json' + body = complexjson.dumps(json) + if not isinstance(body, bytes): + body = body.encode('utf-8') is_stream = all([ hasattr(data, '__iter__'),