diff options
-rw-r--r-- | Doc/library/http.client.rst | 16 | ||||
-rw-r--r-- | Lib/http/client.py | 3 | ||||
-rw-r--r-- | Lib/test/test_httplib.py | 17 | ||||
-rw-r--r-- | Misc/NEWS | 3 |
4 files changed, 39 insertions, 0 deletions
diff --git a/Doc/library/http.client.rst b/Doc/library/http.client.rst index 0b41327..737ba15 100644 --- a/Doc/library/http.client.rst +++ b/Doc/library/http.client.rst @@ -504,6 +504,22 @@ Here is an example session that uses the ``GET`` method:: >>> data2 = r2.read() >>> conn.close() +Here is an example session that uses ``HEAD`` method. Note that ``HEAD`` method +never returns any data. :: + + + >>> import http.client + >>> conn = http.client.HTTPConnection("www.python.org") + >>> conn.request("HEAD","/index.html") + >>> res = conn.getresponse() + >>> print(res.status, res.reason) + 200 OK + >>> data = res.read() + >>> print(len(data)) + 0 + >>> data == b'' + True + Here is an example session that shows how to ``POST`` requests:: >>> import http.client, urllib.parse diff --git a/Lib/http/client.py b/Lib/http/client.py index 1de34ef..f9b74e4 100644 --- a/Lib/http/client.py +++ b/Lib/http/client.py @@ -487,6 +487,9 @@ class HTTPResponse(io.RawIOBase): if self.fp is None: return b"" + if self._method == "HEAD": + return b"" + if self.chunked: return self._read_chunked(amt) diff --git a/Lib/test/test_httplib.py b/Lib/test/test_httplib.py index 37cda5d..98db2b7 100644 --- a/Lib/test/test_httplib.py +++ b/Lib/test/test_httplib.py @@ -219,6 +219,23 @@ class BasicTest(TestCase): finally: resp.close() + def test_chunked_head(self): + chunked_start = ( + 'HTTP/1.1 200 OK\r\n' + 'Transfer-Encoding: chunked\r\n\r\n' + 'a\r\n' + 'hello world\r\n' + '1\r\n' + 'd\r\n' + ) + sock = FakeSocket(chunked_start + '0\r\n') + resp = client.HTTPResponse(sock, method="HEAD") + resp.begin() + self.assertEquals(resp.read(), b'') + self.assertEquals(resp.status, 200) + self.assertEquals(resp.reason, 'OK') + resp.close() + def test_negative_content_length(self): sock = FakeSocket( 'HTTP/1.1 200 OK\r\nContent-Length: -1\r\n\r\nHello\r\n') @@ -40,6 +40,9 @@ Core and Builtins Library ------- +- Issue #6312: Fixed http HEAD request when the transfer encoding is chunked. + It should correctly return an empty response now. + - Issue #8549: Fix compiling the _ssl extension under AIX. Patch by Sridhar Ratnakumar. |