summaryrefslogtreecommitdiffstats
path: root/Doc
diff options
context:
space:
mode:
authorDavid Foster <david@dafoster.net>2023-05-09 19:57:17 (GMT)
committerGitHub <noreply@github.com>2023-05-09 19:57:17 (GMT)
commit7ba6288feb961fcd60a29415c6371d2d3eb80bec (patch)
tree76a7aceab46cb39b60efcadcbe7909f8052a079d /Doc
parent01c321ca34d99f35f174768c6f8c500801d4ef4c (diff)
downloadcpython-7ba6288feb961fcd60a29415c6371d2d3eb80bec.zip
cpython-7ba6288feb961fcd60a29415c6371d2d3eb80bec.tar.gz
cpython-7ba6288feb961fcd60a29415c6371d2d3eb80bec.tar.bz2
gh-102327: Extend docs for "url" and "headers" parameters to HTTPConnection.request()
Added example on how to use the HTTPConnection object for making GET request. Original issue: https://github.com/python/cpython/issues/102327 --------- Co-authored-by: Éric <earaujo@caravan.coop>
Diffstat (limited to 'Doc')
-rw-r--r--Doc/library/http.client.rst20
1 files changed, 18 insertions, 2 deletions
diff --git a/Doc/library/http.client.rst b/Doc/library/http.client.rst
index eb8c1e1..bf1f2e3 100644
--- a/Doc/library/http.client.rst
+++ b/Doc/library/http.client.rst
@@ -264,7 +264,10 @@ HTTPConnection Objects
encode_chunked=False)
This will send a request to the server using the HTTP request
- method *method* and the selector *url*.
+ method *method* and the request URI *url*. The provided *url* must be
+ an absolute path to conform with :rfc:`RFC 2616 §5.1.2 <2616#section-5.1.2>`
+ (unless connecting to an HTTP proxy server or using the ``OPTIONS`` or
+ ``CONNECT`` methods).
If *body* is specified, the specified data is sent after the headers are
finished. It may be a :class:`str`, a :term:`bytes-like object`, an
@@ -279,7 +282,10 @@ HTTPConnection Objects
iterable are sent as is until the iterable is exhausted.
The *headers* argument should be a mapping of extra HTTP headers to send
- with the request.
+ with the request. A :rfc:`Host header <2616#section-14.23>`
+ must be provided to conform with :rfc:`RFC 2616 §5.1.2 <2616#section-5.1.2>`
+ (unless connecting to an HTTP proxy server or using the ``OPTIONS`` or
+ ``CONNECT`` methods).
If *headers* contains neither Content-Length nor Transfer-Encoding,
but there is a request body, one of those
@@ -298,6 +304,16 @@ HTTPConnection Objects
HTTPConnection object assumes that all encoding is handled by the
calling code. If it is ``True``, the body will be chunk-encoded.
+ For example, to perform a ``GET`` request to ``https://docs.python.org/3/``::
+
+ >>> import http.client
+ >>> host = "docs.python.org"
+ >>> conn = http.client.HTTPSConnection(host)
+ >>> conn.request("GET", "/3/", headers={"Host": host})
+ >>> response = conn.getresponse()
+ >>> print(response.status, response.reason)
+ 200 OK
+
.. note::
Chunked transfer encoding has been added to the HTTP protocol
version 1.1. Unless the HTTP server is known to handle HTTP 1.1,