搜尋
首頁後端開發Python教學python httpx如何使用

什麼是 Httpx

Httpx 是一個 Python 函式庫,它提供了一個現代化的、易於使用的 HTTP 用戶端和伺服器。 Httpx 可以與 Python 的非同步框架協同工作,並支援 WebSocket 和 HTTP/2。 Httpx 具有極佳的效能和安全性,並支援對各種不同的協定、編碼和驗證方案進行靈活配置。

安裝 Httpx

安裝 Httpx 函式庫非常簡單。只需使用 pip 套件管理器執行以下命令:

pip install httpx

如果您正在使用 Python 3.7 或更早版本,則需要安裝 Httpx 的非同步依賴項 aiohttp。

您可以透過執行以下命令來安裝它:

pip install httpx[aiohttp]

發送 HTTP 請求

使用 Httpx 發送 HTTP 請求非常簡單。以下是一個簡單的範例,它使用 Httpx 發送一個 GET 請求:

import httpx

response = httpx.get('https://www.baidu.com')
print(response.status_code)
print(response.text)

在這個範例中,我們使用 Httpx 的 get 方法發送了一個 GET 請求。該請求的 URL 是 https://www.baidu.com。這個方法傳回一個 Response 對象,我們可以使用該對象來存取回應狀態碼和回應文字。

Httpx 支援許多不同的 HTTP 方法,包括 GET、POST、PUT、DELETE、HEAD 和 OPTIONS。您可以使用 Httpx 的方法來傳送這些請求。

以下是一些範例:

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

上述範例中的每個請求都可以使用 Httpx 的方法來傳送。這些方法中的大多數都支援傳遞資料、標頭和查詢參數等參數。

傳送非同步 HTTP 請求

Httpx 也支援非同步 HTTP 請求。以下是一個簡單的範例,它使用Httpx 發送一個非同步GET 請求:

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

在這個範例中,我們建立了一個名為get_request 的非同步函數,它使用Httpx 的AsyncClient 類別來傳送一個非同步GET請求。在非同步函數中,我們使用 async with 語句來建立 Httpx 的非同步客戶端。使用這種方式建立客戶端可以確保在請求完成後自動關閉客戶端。然後,我們使用 await 關鍵字來非同步等待回應,並從回應物件存取回應狀態碼和回應文字。

類似於同步請求,Httpx 的非同步客戶端也支援許多不同的 HTTP 方法。

以下是一些範例:

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

設定請求標頭

在傳送 HTTP 請求時,您通常需要設定請求標頭。 Httpx 可讓您透過在請求方法中傳遞 headers 參數來設定請求標頭。

以下是一個範例:

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)

在這個範例中,我們使用 headers 參數設定了一個名為 User-Agent 的請求標頭。

設定請求參數

Httpx 允許您在傳送 HTTP 請求時設定請求參數。

以下是一些範例:

import httpx

params = {'key1': 'value1', 'key2': 'value2'}

response = httpx.get('https://www.baidu.com', params=params)
print(response.status_code)
print(response.text)

在這個範例中,我們使用 params 參數設定了兩個查詢參數 key1 和 key2。

傳送請求體

在傳送 POST、PUT 和 DELETE 請求時,您通常需要在請求體中包含資料。 Httpx 可讓您使用 data 參數設定請求體中的資料。

以下是一個範例:

import httpx

data = {'key': 'value'}

response = httpx.post('https://www.baidu.com', data=data)
print(response.status_code)
print(response.text)

在這個範例中,我們使用 data 參數設定了一個名為 key 的請求體參數。

傳送 JSON 資料

Httpx 允許您使用 json 參數傳送 JSON 資料。

以下是一個範例:

import httpx

data = {'key': 'value'}

response = httpx.post('https://www.baidu.com', json=data)
print(response.status_code)
print(response.text)

在這個範例中,我們使用 json 參數設定了一個名為 key 的 JSON 請求體參數。

設定逾時

在傳送 HTTP 請求時,您通常需要設定逾時時間。 Httpx 允許您使用 timeout 參數設定逾時時間。

以下是一個範例:

import httpx

response = httpx.get('https://www.baidu.com', timeout=5)
print(response.status_code)
print(response.text)

在這個範例中,我們使用 timeout 參數設定了 5 秒的逾時時間。

錯誤處理

Httpx 可以拋出各種不同類型的異常,以幫助您診斷和解決問題。以下是一些常見的例外:

  • httpx.HTTPError:發生 HTTP 錯誤時引發。

  • httpx.RequestError:發生請求錯誤時引發。

  • httpx.NetworkError:發生網路錯誤時引發。

  • httpx.TimeoutException:發生逾時時引發。

在處理這些例外狀況時,您可以使用 try/except 語句來擷取例外狀況並採取適當的措施。以下是一個範例:

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)

在這個範例中,我們使用 try/except 語句捕獲了所有可能發生的異常,並根據異常類型採取了適當的措施。

憑證驗證

Httpx 可讓您驗證 SSL 憑證以確保與伺服器的安全連線。預設情況下,Httpx 會驗證 SSL 憑證。如果您需要停用憑證驗證,可以將 verify 參數設定為 False。

以下是一個範例:

import httpx

response = httpx.get('https://www.baidu.com', verify=False)
print(response.status_code)
print(response.text)

在這個範例中,我們將 verify 參數設為 False,以停用 SSL 憑證驗證。

使用代理程式

Httpx 允許您使用代理來傳送 HTTP 請求。以下是一個範例:

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)

在這個範例中,我們使用 proxies 參數設定了兩個代理伺服器。

上傳檔案

Httpx 允許您使用 files 參數上傳檔案。以下是一個範例:

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。

以上是python httpx如何使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:亿速云。如有侵權,請聯絡admin@php.cn刪除
您如何切成python陣列?您如何切成python陣列?May 01, 2025 am 12:18 AM

Python列表切片的基本語法是list[start:stop:step]。 1.start是包含的第一個元素索引,2.stop是排除的第一個元素索引,3.step決定元素之間的步長。切片不僅用於提取數據,還可以修改和反轉列表。

在什麼情況下,列表的表現比數組表現更好?在什麼情況下,列表的表現比數組表現更好?May 01, 2025 am 12:06 AM

ListSoutPerformarRaysin:1)DynamicsizicsizingandFrequentInsertions/刪除,2)儲存的二聚體和3)MemoryFeliceFiceForceforseforsparsedata,butmayhaveslightperformancecostsinclentoperations。

如何將Python數組轉換為Python列表?如何將Python數組轉換為Python列表?May 01, 2025 am 12:05 AM

toConvertapythonarraytoalist,usEthelist()constructororageneratorexpression.1)intimpthearraymoduleandcreateanArray.2)USELIST(ARR)或[XFORXINARR] to ConconverTittoalist,請考慮performorefformanceandmemoryfformanceandmemoryfformienceforlargedAtasetset。

當Python中存在列表時,使用數組的目的是什麼?當Python中存在列表時,使用數組的目的是什麼?May 01, 2025 am 12:04 AM

choosearraysoverlistsinpythonforbetterperformanceandmemoryfliceSpecificScenarios.1)largenumericaldatasets:arraysreducememoryusage.2)績效 - 臨界雜貨:arraysoffersoffersOffersOffersOffersPoostSfoostSforsssfortasssfortaskslikeappensearch orearch.3)testessenforcety:arraysenforce:arraysenforc

說明如何通過列表和數組的元素迭代。說明如何通過列表和數組的元素迭代。May 01, 2025 am 12:01 AM

在Python中,可以使用for循環、enumerate和列表推導式遍歷列表;在Java中,可以使用傳統for循環和增強for循環遍歷數組。 1.Python列表遍歷方法包括:for循環、enumerate和列表推導式。 2.Java數組遍歷方法包括:傳統for循環和增強for循環。

什麼是Python Switch語句?什麼是Python Switch語句?Apr 30, 2025 pm 02:08 PM

本文討論了版本3.10中介紹的Python的新“匹配”語句,該語句與其他語言相同。它增強了代碼的可讀性,並為傳統的if-elif-el提供了性能優勢

Python中有什麼例外組?Python中有什麼例外組?Apr 30, 2025 pm 02:07 PM

Python 3.11中的異常組允許同時處理多個異常,從而改善了並發方案和復雜操作中的錯誤管理。

Python中的功能註釋是什麼?Python中的功能註釋是什麼?Apr 30, 2025 pm 02:06 PM

Python中的功能註釋將元數據添加到函數中,以進行類型檢查,文檔和IDE支持。它們增強了代碼的可讀性,維護,並且在API開發,數據科學和圖書館創建中至關重要。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。