Modul ini mendefinisikan kelas yang mengimplementasikan sisi klien dari protokol HTTP dan HTTPS. Biasanya tidak digunakan secara langsung — modul menggunakannya untuk menangani URL yang menggunakan HTTP dan HTTPS
Lihat juga
Paket Permintaan direkomendasikan untuk antarmuka klien HTTP tingkat yang lebih tinggi
Catatan
Dukungan HTTPS hanya tersedia jika Python dikompilasi dengan dukungan SSL (melalui modul)
bukan Emscripten, bukan WASI
Modul ini tidak berfungsi atau tidak tersedia di platform WebAssembly wasm32-emscripten dan >>> import http.client >>> conn = http.client.HTTPSConnection("localhost", 8080) >>> conn.set_tunnel("www.python.org") >>> conn.request("HEAD","/index.html") 0. Lihat untuk informasi lebih lanjut
Modul ini menyediakan kelas-kelas berikut
kelas http. klien. HTTPConnection(host , port=None , [waktu tunggu , ]source_address=None , blocksize=8192)Instance mewakili satu transaksi dengan server HTTP. Itu harus dipakai dengan memberikannya host dan nomor port opsional. Jika tidak ada nomor port yang diteruskan, port diekstraksi dari string host jika memiliki bentuk >>> import http.client >>> conn = http.client.HTTPSConnection("localhost", 8080) >>> conn.set_tunnel("www.python.org") >>> conn.request("HEAD","/index.html") 2, selain itu port HTTP default (80) digunakan. Jika parameter batas waktu opsional diberikan, operasi pemblokiran (seperti upaya koneksi) akan habis setelah beberapa detik (jika tidak diberikan, pengaturan batas waktu default global digunakan). Parameter source_address opsional dapat berupa Tuple dari (host, port) untuk digunakan sebagai alamat sumber tempat koneksi HTTP dibuat. Parameter blockize opsional mengatur ukuran buffer dalam byte untuk mengirim badan pesan seperti file
Misalnya, panggilan berikut ini semua membuat instance yang terhubung ke server di host dan port yang sama
>>> h1 = 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)
Berubah di versi 3. 2. source_address telah ditambahkan.
Berubah di versi 3. 4. Parameter ketat telah dihapus. HTTP 0. 9 gaya “Respons Sederhana” tidak lagi didukung.
Berubah di versi 3. 7. parameter ukuran blok telah ditambahkan.
kelas http. klien. HTTPSConnection(host , port=None , key_file=Tidak ada , cert_file=Tidak ada , [waktu tunggu , ]source_address=None , * , context=None , check_hostname=Tidak ada , blocksize=8192)Subkelas yang menggunakan SSL untuk komunikasi dengan server aman. Port default adalah >>> import http.client >>> conn = http.client.HTTPSConnection("localhost", 8080) >>> conn.set_tunnel("www.python.org") >>> conn.request("HEAD","/index.html") 4. Jika konteks ditentukan, itu harus berupa contoh yang menjelaskan berbagai opsi SSL
Silakan baca untuk informasi lebih lanjut tentang praktik terbaik
Berubah di versi 3. 2. source_address, context dan check_hostname telah ditambahkan.
Berubah di versi 3. 2. Kelas ini sekarang mendukung host virtual HTTPS jika memungkinkan (yaitu, jika benar).
Berubah di versi 3. 4. Parameter ketat telah dihapus. HTTP 0. 9 gaya “Respons Sederhana” tidak lagi didukung.
Berubah di versi 3. 4. 3. Kelas ini sekarang melakukan semua pemeriksaan sertifikat dan hostname yang diperlukan secara default. Untuk kembali ke perilaku sebelumnya yang belum diverifikasi, >>> import http.client >>> conn = http.client.HTTPSConnection("localhost", 8080) >>> conn.set_tunnel("www.python.org") >>> conn.request("HEAD","/index.html") 7 dapat diteruskan ke parameter konteks.
Berubah di versi 3. 8. Kelas ini sekarang mengaktifkan TLS 1. 3 untuk konteks default atau ketika cert_file diteruskan dengan konteks khusus.
Berubah di versi 3. 10. Kelas ini sekarang mengirimkan ekstensi ALPN dengan indikator protokol >>> import http.client >>> conn = http.client.HTTPSConnection("localhost", 8080) >>> conn.set_tunnel("www.python.org") >>> conn.request("HEAD","/index.html") 9 ketika tidak ada konteks yang diberikan. Konteks khusus harus menetapkan protokol ALPN dengan >>> 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'<!doctype html>\n<!--[if"... ... >>> # Example of an invalid request >>> conn = http.client.HTTPSConnection("docs.python.org") >>> conn.request("GET", "/parrot.spam") >>> r2 = conn.getresponse() >>> print(r2.status, r2.reason) 404 Not Found >>> data2 = r2.read() >>> conn.close() 0.
Tidak digunakan lagi sejak versi 3. 6. key_file dan cert_file tidak digunakan lagi karena konteks. Harap gunakan sebagai gantinya, atau biarkan memilih sertifikat CA tepercaya sistem untuk Anda.
Parameter check_hostname juga tidak digunakan lagi;
kelas http. klien. HTTPResponse(kaus kaki , tingkat debug=0 , metode=Tidak ada , url=Tidak ada)Kelas yang instansnya dikembalikan setelah koneksi berhasil. Tidak dipakai langsung oleh pengguna
Berubah di versi 3. 4. Parameter ketat telah dihapus. HTTP 0. 9 gaya “Respons Sederhana” tidak lagi didukung.
Modul ini menyediakan fungsi berikut
http. klien. parse_headers(fp)Parsing header dari penunjuk file fp yang mewakili permintaan/respons HTTP. File tersebut harus berupa pembaca >>> 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'<!doctype html>\n<!--[if"... ... >>> # Example of an invalid request >>> conn = http.client.HTTPSConnection("docs.python.org") >>> conn.request("GET", "/parrot.spam") >>> r2 = conn.getresponse() >>> print(r2.status, r2.reason) 404 Not Found >>> data2 = r2.read() >>> conn.close() _4 (mis. e. bukan teks) dan harus memberikan header gaya RFC 2822 yang valid
Fungsi ini mengembalikan instance >>> 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'<!doctype html>\n<!--[if"... ... >>> # Example of an invalid request >>> conn = http.client.HTTPSConnection("docs.python.org") >>> conn.request("GET", "/parrot.spam") >>> r2 = conn.getresponse() >>> print(r2.status, r2.reason) 404 Not Found >>> data2 = r2.read() >>> conn.close() _5 yang menampung kolom header, tetapi tanpa payload (sama dengan dan ). Setelah kembali, file pointer fp siap membaca HTTP body
Catatan
tidak mem-parsing baris awal pesan HTTP; . File harus siap untuk membaca baris bidang ini, jadi baris pertama harus sudah digunakan sebelum memanggil fungsi
Pengecualian berikut diajukan sebagaimana mestinya
pengecualian http. klien. Pengecualian HTTPKelas dasar dari pengecualian lain dalam modul ini. Ini adalah subkelas dari
pengecualian http. klien. Tidak terhubungSebuah subkelas dari
pengecualian http. klien. URL tidak validSubkelas dari , dimunculkan jika port diberikan dan non-numerik atau kosong
pengecualian http. klien. Protokol Tidak DikenalSebuah subkelas dari
pengecualian http. klien. Pengodean Transfer Tidak DikenalSebuah subkelas dari
pengecualian http. klien. Mode File yang tidak diimplementasikanSebuah subkelas dari
pengecualian http. klien. Tidak lengkapBacaSebuah subkelas dari
pengecualian http. klien. Status Koneksi Tidak BenarSebuah subkelas dari
pengecualian http. klien. Tidak Dapat Mengirim PermintaanSebuah subkelas dari
pengecualian http. klien. Tidak Dapat MengirimHeaderSebuah subkelas dari
pengecualian http. klien. ResponseNotReadySebuah subkelas dari
pengecualian http. klien. BadStatusLineSebuah subkelas dari. Dibesarkan jika server merespons dengan kode status HTTP yang tidak kami pahami
pengecualian http. klien. LineTooLongSebuah subkelas dari. Dibesarkan jika antrean yang terlalu panjang diterima dalam protokol HTTP dari server
pengecualian http. klien. Terputus Jarak JauhSubkelas dari dan. Dibesarkan saat upaya untuk membaca respons menghasilkan tidak ada data yang dibaca dari koneksi, menunjukkan bahwa ujung jarak jauh telah menutup koneksi
Baru di versi 3. 5. Sebelumnya, >>> import http.client, urllib.parse >>> params = urllib.parse.urlencode({'@number': 12524, '@type': 'issue', '@action': 'show'}) >>> headers = {"Content-type": "application/x-www-form-urlencoded", .. "Accept": "text/plain"} >>> conn = http.client.HTTPConnection("bugs.python.org") >>> conn.request("POST", "", params, headers) >>> response = conn.getresponse() >>> print(response.status, response.reason) 302 Found >>> data = response.read() >>> data b'Redirecting to <a href="//bugs.python.org/issue12524">//bugs.python.org/issue12524</a>' >>> conn.close() 7 dibesarkan.
Konstanta yang didefinisikan dalam modul ini adalah
http. klien. HTTP_PORTPort default untuk protokol HTTP (selalu >>> import http.client, urllib.parse >>> params = urllib.parse.urlencode({'@number': 12524, '@type': 'issue', '@action': 'show'}) >>> headers = {"Content-type": "application/x-www-form-urlencoded", .. "Accept": "text/plain"} >>> conn = http.client.HTTPConnection("bugs.python.org") >>> conn.request("POST", "", params, headers) >>> response = conn.getresponse() >>> print(response.status, response.reason) 302 Found >>> data = response.read() >>> data b'Redirecting to <a href="//bugs.python.org/issue12524">//bugs.python.org/issue12524</a>' >>> conn.close() 8)
http. klien. HTTPS_PORTPort default untuk protokol HTTPS (selalu >>> import http.client >>> conn = http.client.HTTPSConnection("localhost", 8080) >>> conn.set_tunnel("www.python.org") >>> conn.request("HEAD","/index.html") 4)
http. klien. tanggapanKamus ini memetakan HTTP 1. 1 kode status ke nama W3C
Contoh. >>> # This creates an HTTP request >>> # with the content of BODY as the enclosed representation >>> # for the resource //localhost:8080/file ... >>> import http.client >>> BODY = "***filecontents***" >>> conn = http.client.HTTPConnection("localhost", 8080) >>> conn.request("PUT", "/file", BODY) >>> response = conn.getresponse() >>> print(response.status, response.reason) 200, OK 0 adalah >>> # This creates an HTTP request >>> # with the content of BODY as the enclosed representation >>> # for the resource //localhost:8080/file ... >>> import http.client >>> BODY = "***filecontents***" >>> conn = http.client.HTTPConnection("localhost", 8080) >>> conn.request("PUT", "/file", BODY) >>> response = conn.getresponse() >>> print(response.status, response.reason) 200, OK 1
Lihat daftar kode status HTTP yang tersedia dalam modul ini sebagai konstanta
Objek Koneksi HTTP
contoh memiliki metode berikut
Koneksi HTTP. permintaan(metode , url, body=None, headers={}, *, encode_chunked=False)Ini akan mengirim permintaan ke server menggunakan metode metode permintaan HTTP dan url pemilih
Jika badan ditentukan, data yang ditentukan dikirim setelah header selesai. Mungkin a , a , open , atau iterable dari. Jika body adalah string, maka dikodekan sebagai ISO-8859-1, default untuk HTTP. Jika itu adalah objek seperti byte, byte dikirim apa adanya. Jika berupa , isi file dikirim; . Jika objek file adalah turunan dari , data yang dikembalikan oleh metode >>> # This creates an HTTP request >>> # with the content of BODY as the enclosed representation >>> # for the resource //localhost:8080/file ... >>> import http.client >>> BODY = "***filecontents***" >>> conn = http.client.HTTPConnection("localhost", 8080) >>> conn.request("PUT", "/file", BODY) >>> response = conn.getresponse() >>> print(response.status, response.reason) 200, OK 5 akan dikodekan sebagai ISO-8859-1, jika tidak, data yang dikembalikan oleh >>> # This creates an HTTP request >>> # with the content of BODY as the enclosed representation >>> # for the resource //localhost:8080/file ... >>> import http.client >>> BODY = "***filecontents***" >>> conn = http.client.HTTPConnection("localhost", 8080) >>> conn.request("PUT", "/file", BODY) >>> response = conn.getresponse() >>> print(response.status, response.reason) 200, OK 5 dikirim apa adanya. Jika body adalah iterable, elemen dari iterable dikirim apa adanya sampai iterable habis
Argumen header harus berupa pemetaan header HTTP tambahan untuk dikirim dengan permintaan
Jika header tidak berisi Content-Length atau Transfer-Encoding, tetapi ada badan permintaan, salah satu bidang header tersebut akan ditambahkan secara otomatis. Jika badan adalah >>> # This creates an HTTP request >>> # with the content of BODY as the enclosed representation >>> # for the resource //localhost:8080/file ... >>> import http.client >>> BODY = "***filecontents***" >>> conn = http.client.HTTPConnection("localhost", 8080) >>> conn.request("PUT", "/file", BODY) >>> response = conn.getresponse() >>> print(response.status, response.reason) 200, OK 9, header Panjang Konten diatur ke http.client0 untuk metode yang mengharapkan badan (http.client1, http.client2, dan http.client3). Jika body adalah string atau objek mirip byte yang bukan juga a , header Content-Length disetel ke panjangnya. Jenis tubuh lainnya (file dan iterables pada umumnya) akan dikodekan secara chunk, dan header Transfer-Encoding akan secara otomatis disetel alih-alih Content-Length
Argumen encode_chunked hanya relevan jika Transfer-Encoding ditentukan di header. Jika encode_chunked adalah http.client4, objek HTTPConnection mengasumsikan bahwa semua penyandian ditangani oleh kode panggilan. Jika http.client_5, badan akan disandikan potongan
Catatan
Pengkodean transfer terpotong telah ditambahkan ke protokol HTTP versi 1. 1. Kecuali jika server HTTP diketahui menangani HTTP 1. 1, pemanggil harus menentukan Content-Length, atau harus melewati objek mirip byte atau yang bukan juga file sebagai representasi tubuh
Baru di versi 3. 2. body sekarang bisa menjadi iterable.
Berubah di versi 3. 6. Jika Content-Length atau Transfer-Encoding tidak diatur dalam header, file dan objek tubuh yang dapat diubah sekarang dikodekan potongan. Argumen encode_chunked telah ditambahkan. Tidak ada upaya yang dilakukan untuk menentukan Content-Length untuk objek file.
Koneksi HTTP. dapatkan respons()Harus dipanggil setelah permintaan dikirim untuk mendapatkan respons dari server. Mengembalikan sebuah instance
Catatan
Perhatikan bahwa Anda harus membaca seluruh tanggapan sebelum Anda dapat mengirim permintaan baru ke server
Berubah di versi 3. 5. Jika sebuah atau subclass dimunculkan, objek akan siap untuk terhubung kembali saat permintaan baru dikirim.
Koneksi HTTP. set_debugtingkat(tingkat)Tetapkan tingkat debug. Level debug default adalah http.client_0, artinya tidak ada hasil debug yang dicetak. Nilai apa pun yang lebih besar dari http.client0 akan menyebabkan semua keluaran debug yang ditentukan saat ini dicetak ke stdout. urllib.request_2 diteruskan ke objek baru yang dibuat
Baru di versi 3. 1
Koneksi HTTP. set_tunnel(host , port=None, headers=None)Tetapkan host dan porta untuk HTTP Connect Tunneling. Ini memungkinkan menjalankan koneksi melalui server proxy
Argumen host dan port menentukan titik akhir dari koneksi terowongan (mis. e. alamat yang disertakan dalam permintaan CONNECT, bukan alamat server proxy)
Argumen header harus berupa pemetaan header HTTP ekstra untuk dikirim dengan permintaan CONNECT
Misalnya, untuk melakukan tunnel melalui server proxy HTTPS yang berjalan secara lokal pada port 8080, kami akan meneruskan alamat proxy ke konstruktor, dan alamat host yang pada akhirnya ingin kami jangkau ke metode
>>> import http.client >>> conn = http.client.HTTPSConnection("localhost", 8080) >>> conn.set_tunnel("www.python.org") >>> conn.request("HEAD","/index.html")
Baru di versi 3. 2
Koneksi HTTP. hubungkan()Sambungkan ke server yang ditentukan saat objek dibuat. Secara default, ini dipanggil secara otomatis saat membuat permintaan jika klien belum memiliki koneksi
Memunculkan urllib.request6 dengan argumen urllib.request7, urllib.request8, urllib.request9
Koneksi HTTP. tutup()Tutup koneksi ke server
Koneksi HTTP. ukuran blokUkuran buffer dalam byte untuk mengirim badan pesan seperti file
Baru di versi 3. 7
Sebagai alternatif untuk menggunakan metode ssl_0 yang dijelaskan di atas, Anda juga dapat mengirimkan permintaan Anda langkah demi langkah, dengan menggunakan empat fungsi di bawah ini
Koneksi HTTP. putrequest(metode , url, skip_host=False, skip_accept_encoding=False)Ini harus menjadi panggilan pertama setelah koneksi ke server dibuat. Ini mengirimkan baris ke server yang terdiri dari string metode, string url, dan versi HTTP (ssl1). Untuk menonaktifkan pengiriman otomatis header ssl_2 atau ssl3 (misalnya untuk menerima pengkodean konten tambahan), tentukan skip_host atau skip_accept_encoding dengan nilai non-False
Koneksi HTTP. putheader(header , argumen . [, ...])Kirim header gaya RFC 822 ke server. Ini mengirimkan baris ke server yang terdiri dari header, titik dua dan spasi, dan argumen pertama. Jika lebih banyak argumen diberikan, garis lanjutan dikirim, masing-masing terdiri dari tab dan argumen
Koneksi HTTP. endheaders(message_body=Tidak ada, *, encode_chunked=False)Kirim baris kosong ke server, menandakan akhir dari header. Argumen message_body opsional dapat digunakan untuk meneruskan isi pesan yang terkait dengan permintaan
Jika encode_chunked adalah http.client5, hasil dari setiap iterasi message_body akan dikodekan secara chunk seperti yang ditentukan dalam RFC 7230, Bagian 3. 3. 1. Bagaimana data dikodekan tergantung pada jenis message_body. Jika message_body mengimplementasikan pengkodean akan menghasilkan satu potongan. Jika message_body adalah , setiap iterasi dari message_body akan menghasilkan potongan. Jika message_body adalah a , setiap panggilan ke ssl6 akan menghasilkan potongan. Metode ini secara otomatis menandakan akhir dari data yang disandikan potongan segera setelah message_body
Catatan
Karena spesifikasi pengkodean chunked, chunk kosong yang dihasilkan oleh badan iterator akan diabaikan oleh chunk-encoder. Hal ini untuk menghindari penghentian pembacaan permintaan sebelum waktunya oleh server target karena penyandian yang salah
Baru di versi 3. 6. Dukungan enkode potongan. Parameter encode_chunked telah ditambahkan.
Koneksi HTTP. kirim(data)Mengirim data ke server. Ini harus digunakan secara langsung hanya setelah metode dipanggil dan sebelum dipanggil
Memunculkan ssl_9 dengan argumen urllib.request7, wasm32-emscripten1
Objek Respons HTTP
Instance membungkus respons HTTP dari server. Ini memberikan akses ke header permintaan dan badan entitas. Responsnya adalah objek yang dapat diubah dan dapat digunakan dalam pernyataan with
Berubah di versi 3. 5. Antarmuka sekarang diimplementasikan dan semua operasi pembacanya didukung.
Respon HTTP. baca([amt])Membaca dan mengembalikan isi respons, atau hingga amt byte berikutnya
Respon HTTP. membaca(b)Membaca hingga len(b) byte berikutnya dari badan respons ke dalam buffer b. Mengembalikan jumlah byte yang dibaca
Baru di versi 3. 3
Respon HTTP. getheader(nama , default=None)Kembalikan nilai nama header, atau default jika tidak ada nama yang cocok dengan header. Jika ada lebih dari satu header dengan nama name, kembalikan semua nilai yang digabungkan dengan ','. Jika default adalah iterable selain string tunggal, elemennya juga dikembalikan dengan koma
Respon HTTP. getheader()Kembalikan daftar tupel (tajuk, nilai).
Respon HTTP. fileno()Kembalikan wasm32-emscripten_4 dari soket di bawahnya
Respon HTTP. pesanInstance >>> 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'<!doctype html>\n<!--[if"... ... >>> # Example of an invalid request >>> conn = http.client.HTTPSConnection("docs.python.org") >>> conn.request("GET", "/parrot.spam") >>> r2 = conn.getresponse() >>> print(r2.status, r2.reason) 404 Not Found >>> data2 = r2.read() >>> conn.close() 5 berisi header respons. >>> 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'<!doctype html>\n<!--[if"... ... >>> # Example of an invalid request >>> conn = http.client.HTTPSConnection("docs.python.org") >>> conn.request("GET", "/parrot.spam") >>> r2 = conn.getresponse() >>> print(r2.status, r2.reason) 404 Not Found >>> data2 = r2.read() >>> conn.close() _5 adalah subkelas dari
Respon HTTP. versiVersi protokol HTTP yang digunakan oleh server. 10 untuk HTTP/1. 0, 11 untuk HTTP/1. 1
Respon HTTP. urlURL sumber daya diambil, biasanya digunakan untuk menentukan apakah pengalihan diikuti
Respon HTTP. headerTajuk respons dalam bentuk instance
Respon HTTP. statusKode status dikembalikan oleh server
Respon HTTP. alasanFrasa alasan dikembalikan oleh server
Respon HTTP. tingkat debugPengait debug. Jika lebih besar dari nol, pesan akan dicetak ke stdout saat respons dibaca dan diuraikan
Respon HTTP. ditutupApakah http.client5 jika aliran ditutup
Respon HTTP. geturl()Tidak digunakan lagi sejak versi 3. 9. Dihapus karena mendukung.
Respon HTTP. info()Tidak digunakan lagi sejak versi 3. 9. Dihapus karena mendukung.
Respon HTTP. getstatus()Tidak digunakan lagi sejak versi 3. 9. Dihapus karena mendukung.
Contoh
Berikut adalah contoh sesi yang menggunakan metode >>> import http.client >>> conn = http.client.HTTPSConnection("localhost", 8080) >>> conn.set_tunnel("www.python.org") >>> conn.request("HEAD","/index.html") 04
>>> 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'<!doctype html>\n<!--[if"... ... >>> # Example of an invalid request >>> conn = http.client.HTTPSConnection("docs.python.org") >>> conn.request("GET", "/parrot.spam") >>> r2 = conn.getresponse() >>> print(r2.status, r2.reason) 404 Not Found >>> data2 = r2.read() >>> conn.close() _
Berikut adalah contoh sesi yang menggunakan metode >>> import http.client >>> conn = http.client.HTTPSConnection("localhost", 8080) >>> conn.set_tunnel("www.python.org") >>> conn.request("HEAD","/index.html") 05. Perhatikan bahwa metode >>> import http.client >>> conn = http.client.HTTPSConnection("localhost", 8080) >>> conn.set_tunnel("www.python.org") >>> conn.request("HEAD","/index.html") _05 tidak pernah mengembalikan data apa pun
>>> import http.client >>> conn = http.client.HTTPSConnection("www.python.org") >>> conn.request("HEAD", "/") >>> res = conn.getresponse() >>> print(res.status, res.reason) 200 OK >>> data = res.read() >>> print(len(data)) 0 >>> data == b'' True
Berikut adalah contoh sesi yang menggunakan metode http.client2
>>> import http.client, urllib.parse >>> params = urllib.parse.urlencode({'@number': 12524, '@type': 'issue', '@action': 'show'}) >>> headers = {"Content-type": "application/x-www-form-urlencoded", .. "Accept": "text/plain"} >>> conn = http.client.HTTPConnection("bugs.python.org") >>> conn.request("POST", "", params, headers) >>> response = conn.getresponse() >>> print(response.status, response.reason) 302 Found >>> data = response.read() >>> data b'Redirecting to <a href="//bugs.python.org/issue12524">//bugs.python.org/issue12524</a>' >>> conn.close()
HTTP sisi klien http.client_1 permintaan sangat mirip dengan permintaan http.client2. Perbedaannya hanya terletak pada sisi server di mana server HTTP akan mengizinkan sumber daya dibuat melalui permintaan http.client1. Perlu dicatat bahwa metode HTTP khusus juga ditangani dengan menyetel atribut metode yang sesuai. Berikut adalah contoh sesi yang menggunakan metode http.client1