Hướng dẫn http client python - http khách hàng python

Mã nguồn: lib/http/client.py Lib/http/client.py


Mô -đun này xác định các lớp thực hiện phía máy khách của các giao thức HTTP và HTTPS. Nó thường không được sử dụng trực tiếp - mô -đun urllib.request sử dụng nó để xử lý các URL sử dụng HTTP và HTTPS.

Xem thêm

Gói yêu cầu được khuyến nghị cho giao diện máy khách HTTP cấp cao hơn.

Ghi chú

Hỗ trợ HTTPS chỉ khả dụng nếu Python được biên dịch với hỗ trợ SSL (thông qua mô -đun ssl).

Mô -đun cung cấp các lớp sau:

Lớp ________ 8 ________ 9 (host, port = none, [timeout,] Source_address = none, blocksize = 8192) ¶(host, port=None, [timeout, ]source_address=None, blocksize=8192)

Một thể hiện

>>> import http.client
>>> conn = http.client.HTTPSConnection("localhost", 8080)
>>> conn.set_tunnel("www.python.org")
>>> conn.request("HEAD","/index.html")
0 đại diện cho một giao dịch với máy chủ HTTP. Nó nên được khởi tạo bằng cách chuyển nó một máy chủ và số cổng tùy chọn. Nếu không có số cổng nào được truyền, cổng được trích xuất từ ​​chuỗi máy chủ nếu có dạng
>>> import http.client
>>> conn = http.client.HTTPSConnection("localhost", 8080)
>>> conn.set_tunnel("www.python.org")
>>> conn.request("HEAD","/index.html")
1, nếu không cổng HTTP mặc định (80) được sử dụng. Nếu tham số thời gian chờ tùy chọn được đưa ra, các hoạt động chặn (như các lần thử kết nối) sẽ hết thời gian sau nhiều giây (nếu không được cung cấp, cài đặt thời gian chờ mặc định toàn cầu được sử dụng). Tham số Source_address tùy chọn có thể là một bộ của (máy chủ, cổng) để sử dụng làm địa chỉ nguồn mà kết nối HTTP được tạo từ. Tham số BlockSize tùy chọn đặt kích thước bộ đệm trong byte để gửi thân thông báo giống như tệp.

Ví dụ: tất cả các cuộc gọi sau đều tạo các phiên bản kết nối với máy chủ tại cùng một máy chủ và cổng:

>>> h2 = http.client.HTTPConnection('www.python.org')
>>> h2 = http.client.HTTPConnection('www.python.org:80')
>>> h3 = http.client.HTTPConnection('www.python.org', 80)
>>> h4 = http.client.HTTPConnection('www.python.org', 80, timeout=10)

Đã thay đổi trong phiên bản 3.2: Source_address đã được thêm vào.source_address was added.

Thay đổi trong phiên bản 3.4: Tham số nghiêm ngặt đã bị xóa. Các phản hồi đơn giản theo phong cách HTTP 0,9 không còn được hỗ trợ.The strict parameter was removed. HTTP 0.9-style “Simple Responses” are no longer supported.

Thay đổi trong phiên bản 3.7: Tham số khối đã được thêm vào.blocksize parameter was added.

Lớp ________ 8 ________ 13 (host, port = none, key_file = none, cert_file = none, [timeout,] Source_address = none, *, bối cảnh = không, kiểm tra_hostname = none, blocksize = 8192)(host, port=None, key_file=None, cert_file=None, [timeout, ]source_address=None, *, context=None, check_hostname=None, blocksize=8192)

Một lớp con của

>>> import http.client
>>> conn = http.client.HTTPSConnection("localhost", 8080)
>>> conn.set_tunnel("www.python.org")
>>> conn.request("HEAD","/index.html")
0 sử dụng SSL để liên lạc với các máy chủ an toàn. Cổng mặc định là
>>> import http.client
>>> conn = http.client.HTTPSConnection("localhost", 8080)
>>> conn.set_tunnel("www.python.org")
>>> conn.request("HEAD","/index.html")
5. Nếu ngữ cảnh được chỉ định, nó phải là một thể hiện
>>> import http.client
>>> conn = http.client.HTTPSConnection("localhost", 8080)
>>> conn.set_tunnel("www.python.org")
>>> conn.request("HEAD","/index.html")
6 mô tả các tùy chọn SSL khác nhau.

Vui lòng đọc các cân nhắc bảo mật để biết thêm thông tin về thực tiễn tốt nhất.Security considerations for more information on best practices.

Đã thay đổi trong phiên bản 3.2: Source_address, bối cảnh và Check_hostname đã được thêm vào.source_address, context and check_hostname were added.

Đã thay đổi trong phiên bản 3.2: Lớp này hiện hỗ trợ máy chủ ảo HTTPS nếu có thể (nghĩa là, nếu

>>> import http.client
>>> conn = http.client.HTTPSConnection("localhost", 8080)
>>> conn.set_tunnel("www.python.org")
>>> conn.request("HEAD","/index.html")
7 là đúng).This class now supports HTTPS virtual hosts if possible (that is, if
>>> import http.client
>>> conn = http.client.HTTPSConnection("localhost", 8080)
>>> conn.set_tunnel("www.python.org")
>>> conn.request("HEAD","/index.html")
7 is true).

Thay đổi trong phiên bản 3.4: Tham số nghiêm ngặt đã bị xóa. Các phản hồi đơn giản theo phong cách HTTP 0,9 không còn được hỗ trợ.The strict parameter was removed. HTTP 0.9-style “Simple Responses” are no longer supported.

Thay đổi trong phiên bản 3.7: Tham số khối đã được thêm vào.This class now performs all the necessary certificate and hostname checks by default. To revert to the previous, unverified, behavior

>>> import http.client
>>> conn = http.client.HTTPSConnection("localhost", 8080)
>>> conn.set_tunnel("www.python.org")
>>> conn.request("HEAD","/index.html")
8 can be passed to the context parameter.

Lớp ________ 8 ________ 13 (host, port = none, key_file = none, cert_file = none, [timeout,] Source_address = none, *, bối cảnh = không, kiểm tra_hostname = none, blocksize = 8192)This class now enables TLS 1.3

>>> import http.client
>>> conn = http.client.HTTPSConnection("localhost", 8080)
>>> conn.set_tunnel("www.python.org")
>>> conn.request("HEAD","/index.html")
9 for the default context or when cert_file is passed with a custom context.

Một lớp con của

>>> import http.client
>>> conn = http.client.HTTPSConnection("localhost", 8080)
>>> conn.set_tunnel("www.python.org")
>>> conn.request("HEAD","/index.html")
0 sử dụng SSL để liên lạc với các máy chủ an toàn. Cổng mặc định là
>>> import http.client
>>> conn = http.client.HTTPSConnection("localhost", 8080)
>>> conn.set_tunnel("www.python.org")
>>> conn.request("HEAD","/index.html")
5. Nếu ngữ cảnh được chỉ định, nó phải là một thể hiện
>>> import http.client
>>> conn = http.client.HTTPSConnection("localhost", 8080)
>>> conn.set_tunnel("www.python.org")
>>> conn.request("HEAD","/index.html")
6 mô tả các tùy chọn SSL khác nhau.This class now sends an ALPN extension with protocol indicator
>>> import http.client
>>> conn = http.client.HTTPSConnection("www.python.org")
>>> conn.request("GET", "/")
>>> r1 = conn.getresponse()
>>> print(r1.status, r1.reason)
200 OK
>>> data1 = r1.read()  # This will return entire content.
>>> # The following example demonstrates reading data in chunks.
>>> conn.request("GET", "/")
>>> r1 = conn.getresponse()
>>> while chunk := r1.read(200):
...     print(repr(chunk))
b'\n