summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKenneth Reitz <me@kennethreitz.org>2014-11-12 12:34:48 -0500
committerKenneth Reitz <me@kennethreitz.org>2014-11-12 12:34:48 -0500
commit45ef1f8eeb866fc2791b74332e001ae82bf49ae2 (patch)
tree3799a3e71d9b6b4fa2be9534881105dbf7e7a633
parente4ddca0f8b5f61a7cc5f3c1e46174ac05f8f6920 (diff)
parentee50afef59ca47879144448ae056a2836f3d4534 (diff)
downloadpython-requests-45ef1f8eeb866fc2791b74332e001ae82bf49ae2.tar.gz
Merge pull request #2332 from asnelzin/fix-2329
Add overriding Content-Length
-rw-r--r--requests/models.py2
-rwxr-xr-xtest_requests.py8
2 files changed, 9 insertions, 1 deletions
diff --git a/requests/models.py b/requests/models.py
index 3f6a4f92..2370b67f 100644
--- a/requests/models.py
+++ b/requests/models.py
@@ -472,7 +472,7 @@ class PreparedRequest(RequestEncodingMixin, RequestHooksMixin):
l = super_len(body)
if l:
self.headers['Content-Length'] = builtin_str(l)
- elif self.method not in ('GET', 'HEAD'):
+ elif (self.method not in ('GET', 'HEAD')) and (self.headers.get('Content-Length') is None):
self.headers['Content-Length'] = '0'
def prepare_auth(self, auth, url=''):
diff --git a/test_requests.py b/test_requests.py
index b2e12d06..4a05cb2e 100755
--- a/test_requests.py
+++ b/test_requests.py
@@ -103,6 +103,14 @@ class RequestsTestCase(unittest.TestCase):
head_req = requests.Request('HEAD', httpbin('head')).prepare()
assert 'Content-Length' not in head_req.headers
+ def test_override_content_length(self):
+ headers = {
+ 'Content-Length': 'not zero'
+ }
+ r = requests.Request('POST', httpbin('post'), headers=headers).prepare()
+ assert 'Content-Length' in r.headers
+ assert r.headers['Content-Length'] == 'not zero'
+
def test_path_is_not_double_encoded(self):
request = requests.Request('GET', "http://0.0.0.0/get/test case").prepare()