Httpx ialah perpustakaan Python yang menyediakan klien dan pelayan HTTP yang moden dan mudah digunakan. Httpx berfungsi dengan rangka kerja tak segerak Python dan menyokong WebSocket dan HTTP/2. Httpx menawarkan prestasi cemerlang, keselamatan dan konfigurasi fleksibel untuk pelbagai protokol, pengekodan dan skim pengesahan yang berbeza.
Memasang perpustakaan Httpx adalah sangat mudah. Hanya jalankan arahan berikut menggunakan pengurus pakej pip:
pip install httpx
Jika anda menggunakan Python 3.7 atau lebih awal, anda perlu memasang aiohttp kebergantungan tak segerak Httpx.
Anda boleh memasangnya dengan menjalankan arahan berikut:
pip install httpx[aiohttp]
Menghantar permintaan HTTP menggunakan Httpx adalah sangat mudah. Berikut ialah contoh mudah yang menggunakan Httpx untuk menghantar permintaan GET:
import httpx response = httpx.get('https://www.baidu.com') print(response.status_code) print(response.text)
Dalam contoh ini, kami menghantar permintaan GET menggunakan kaedah get Httpx. URL yang diminta ialah https://www.baidu.com. Kaedah ini mengembalikan objek Respons yang boleh kami gunakan untuk mengakses kod status respons dan teks respons.
Httpx menyokong banyak kaedah HTTP yang berbeza, termasuk GET, POST, PUT, DELETE, HEAD dan OPTIONS. Anda boleh menggunakan kaedah Httpx untuk menghantar permintaan ini.
Berikut ialah beberapa contoh:
import httpx response = httpx.post('https://www.baidu.com', data={'key': 'value'}) response = httpx.put('https://www.baidu.com', data={'key': 'value'}) response = httpx.delete('https://www.baidu.com') response = httpx.head('https://www.baidu.com') response = httpx.options('https://www.baidu.com')
Setiap permintaan dalam contoh di atas boleh dihantar menggunakan kaedah Httpx. Kebanyakan kaedah ini menyokong parameter lulus seperti data, pengepala dan parameter pertanyaan.
Httpx juga menyokong permintaan HTTP tak segerak. Berikut ialah contoh mudah yang menggunakan Httpx untuk menghantar permintaan GET tak segerak:
import httpx import asyncio async def get_request(): async with httpx.AsyncClient() as client: response = await client.get('https://www.baidu.com') print(response.status_code) print(response.text) asyncio.run(get_request())
Dalam contoh ini, kami mencipta fungsi tak segerak dipanggil get_request yang menggunakan kelas AsyncClient Httpx untuk menghantar permintaan GET Asynchronous. Dalam fungsi asynchronous, kami menggunakan async with statement untuk mencipta klien asynchronous Httpx. Mencipta klien dengan cara ini memastikan bahawa klien ditutup secara automatik selepas permintaan selesai. Kami kemudian menggunakan kata kunci await untuk menunggu respons secara tidak segerak dan mengakses kod status respons dan teks respons daripada objek respons.
Sama seperti permintaan segerak, klien tak segerak Httpx juga menyokong banyak kaedah HTTP yang berbeza.
Berikut ialah beberapa contoh:
import httpx import asyncio async def post_request(): async with httpx.AsyncClient() as client: response = await client.post('https://www.baidu.com', data={'key': 'value'}) print(response.status_code) print(response.text) asyncio.run(post_request())
Apabila menghantar permintaan HTTP, anda biasanya perlu menetapkan pengepala permintaan. Httpx membolehkan anda menetapkan pengepala permintaan dengan menghantar parameter pengepala dalam kaedah permintaan.
Berikut ialah contoh:
import httpx headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} response = httpx.get('https://www.baidu.com', headers=headers) print(response.status_code) print(response.text)
Dalam contoh ini, kami menetapkan pengepala permintaan yang dipanggil User-Agent menggunakan parameter pengepala.
Httpx membolehkan anda menetapkan parameter permintaan apabila menghantar permintaan HTTP.
Berikut ialah beberapa contoh:
import httpx params = {'key1': 'value1', 'key2': 'value2'} response = httpx.get('https://www.baidu.com', params=params) print(response.status_code) print(response.text)
Dalam contoh ini, kami menetapkan dua parameter pertanyaan key1 dan key2 menggunakan parameter params.
Apabila menghantar permintaan POST, PUT dan DELETE, anda biasanya perlu memasukkan data dalam kandungan permintaan. Httpx membolehkan anda menetapkan data dalam badan permintaan menggunakan parameter data.
Berikut ialah contoh:
import httpx data = {'key': 'value'} response = httpx.post('https://www.baidu.com', data=data) print(response.status_code) print(response.text)
Dalam contoh ini, kami menetapkan parameter badan permintaan bernama kunci menggunakan parameter data.
Httpx membenarkan anda menghantar data JSON menggunakan parameter json.
Berikut ialah contoh:
import httpx data = {'key': 'value'} response = httpx.post('https://www.baidu.com', json=data) print(response.status_code) print(response.text)
Dalam contoh ini, kami menetapkan parameter badan permintaan JSON bernama kunci menggunakan parameter json.
Apabila menghantar permintaan HTTP, anda biasanya perlu menetapkan tamat masa. Httpx membolehkan anda menetapkan tamat masa menggunakan parameter tamat masa.
Berikut ialah contoh:
import httpx response = httpx.get('https://www.baidu.com', timeout=5) print(response.status_code) print(response.text)
Dalam contoh ini, kami menetapkan tamat masa 5 saat menggunakan parameter tamat masa.
Httpx boleh membuang pelbagai jenis pengecualian yang berbeza untuk membantu anda mendiagnosis dan menyelesaikan masalah. Berikut ialah beberapa pengecualian biasa:
httpx.HTTPError: Dibangkitkan apabila ralat HTTP berlaku.
httpx.RequestError: Dibangkitkan apabila ralat permintaan berlaku.
httpx.NetworkError: Dibangkitkan apabila ralat rangkaian berlaku.
httpx.TimeoutException: Dibangkitkan apabila tamat masa berlaku.
Apabila mengendalikan pengecualian ini, anda boleh menggunakan pernyataan cuba/kecuali untuk menangkap pengecualian dan mengambil tindakan yang sewajarnya. Berikut ialah contoh:
import httpx try: response = httpx.get('https://www.baidu.com') response.raise_for_status() except httpx.HTTPError as http_error: print(f'HTTP error occurred: {http_error}') except httpx.RequestError as request_error: print(f'Request error occurred: {request_error}') except httpx.NetworkError as network_error: print(f'Network error occurred: {network_error}') except httpx.TimeoutException as timeout_error: print(f'Timeout error occurred: {timeout_error}') else: print(response.status_code) print(response.text)
Dalam contoh ini, kami menangkap semua kemungkinan pengecualian menggunakan pernyataan cuba/kecuali dan mengambil tindakan yang sesuai berdasarkan jenis pengecualian.
Httpx membolehkan anda mengesahkan sijil SSL untuk memastikan sambungan selamat ke pelayan anda. Secara lalai, Httpx mengesahkan sijil SSL. Jika anda perlu melumpuhkan pengesahan sijil, anda boleh menetapkan parameter pengesahan kepada Palsu.
Berikut ialah contoh:
import httpx response = httpx.get('https://www.baidu.com', verify=False) print(response.status_code) print(response.text)
Dalam contoh ini, kami menetapkan parameter pengesahan kepada Palsu untuk melumpuhkan pengesahan sijil SSL.
Httpx membolehkan anda menggunakan proksi untuk menghantar permintaan HTTP. Berikut ialah contoh:
import httpx proxies = { 'http://http-proxy-server:8080', 'https://https-proxy-server:8080' } response = httpx.get('https://www.baidu.com', proxies=proxies) print(response.status_code) print(response.text)
Dalam contoh ini, kami menyediakan dua pelayan proksi menggunakan parameter proksi.
Httpx membenarkan anda memuat naik fail menggunakan parameter fail. Berikut ialah contoh:
import httpx files = {'file': ('file.txt', open('file.txt', 'rb'))} response = httpx.post('https://www.baidu.com', files=files) print(response.status_code) print(response.text)
在这个示例中,我们使用 files 参数上传了名为 file.txt 的文件。
Httpx 允许您使用 cookies 参数发送 cookie。以下是一个示例:
import httpx cookies = {'name': 'value'} response = httpx.get('https://www.baidu.com', cookies=cookies) print(response.status_code) print(response.text)
在这个示例中,我们使用 cookies 参数发送了名为 name 的 cookie。
Atas ialah kandungan terperinci Bagaimana untuk menggunakan python httpx. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!