diff options
author | Kenneth Reitz <me@kennethreitz.org> | 2014-11-12 12:34:48 -0500 |
---|---|---|
committer | Kenneth Reitz <me@kennethreitz.org> | 2014-11-12 12:34:48 -0500 |
commit | 45ef1f8eeb866fc2791b74332e001ae82bf49ae2 (patch) | |
tree | 3799a3e71d9b6b4fa2be9534881105dbf7e7a633 | |
parent | e4ddca0f8b5f61a7cc5f3c1e46174ac05f8f6920 (diff) | |
parent | ee50afef59ca47879144448ae056a2836f3d4534 (diff) | |
download | python-requests-45ef1f8eeb866fc2791b74332e001ae82bf49ae2.tar.gz |
Merge pull request #2332 from asnelzin/fix-2329
Add overriding Content-Length
-rw-r--r-- | requests/models.py | 2 | ||||
-rwxr-xr-x | test_requests.py | 8 |
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() |