Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menggunakan python httpx

Bagaimana untuk menggunakan python httpx

WBOY
WBOYke hadapan
2023-04-18 23:43:032911semak imbas

Apakah itu Httpx

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 Httpx

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

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.

Hantar permintaan HTTP tak segerak

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())

Tetapkan pengepala permintaan

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.

Tetapkan parameter permintaan

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.

Hantar badan permintaan

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.

Hantar data JSON

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.

Tetapkan tamat masa

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.

Pengendalian Ralat

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.

Pengesahan Sijil

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.

Menggunakan proksi

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.

Muat naik fail

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 的文件。

使用 Cookie

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!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam