Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

gh-102327: Extend docs for "url" and "headers" parameters to HTTPConnection.request() #102328

Merged
merged 9 commits into from
May 9, 2023
18 changes: 17 additions & 1 deletion Doc/library/http.client.rst
Original file line number Diff line number Diff line change
Expand Up @@ -264,7 +264,7 @@ 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*.

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 Down Expand Up @@ -293,6 +293,22 @@ HTTPConnection Objects
Transfer-Encoding header will automatically be set instead of
Content-Length.

.. note::
When using most HTTP methods (like ``GET`` or ``POST``)
the provided ``url`` must be an absolute path and
a ``Host`` header must be provided to conform with
:rfc:`2616#section-5.1.2`.
merwok marked this conversation as resolved.
Show resolved Hide resolved

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

The *encode_chunked* argument is only relevant if Transfer-Encoding is
specified in *headers*. If *encode_chunked* is ``False``, the
HTTPConnection object assumes that all encoding is handled by the
Expand Down