Skip to content

Commit

Permalink
[3.11] gh-102327: Extend docs for "url" and "headers" parameters to H…
Browse files Browse the repository at this point in the history
…TTPConnection.request()

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: #102327

---------

(cherry picked from commit 7ba6288)

Co-authored-by: David Foster <[email protected]>
Co-authored-by: Éric <[email protected]>
  • Loading branch information
3 people authored May 9, 2023
1 parent 663b321 commit fffdbf4
Showing 1 changed file with 18 additions and 2 deletions.
20 changes: 18 additions & 2 deletions Doc/library/http.client.rst
Original file line number Diff line number Diff line change
Expand Up @@ -262,7 +262,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
Expand All @@ -277,7 +280,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
Expand All @@ -296,6 +302,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,
Expand Down

0 comments on commit fffdbf4

Please sign in to comment.