使用Python 請求列印原始HTTP 請求
Python Requests 函式庫簡化了HTTP 請求,但了解原始HTTP 請求對於除錯分析。本文探討如何存取和列印完整的 HTTP 請求,包括請求行、標頭和內容。
以前,提取原始請求需要存取請求屬性,該屬性僅提供標頭。但是,在版本 1.2.3 中,Requests 引入了PreparedRequest 對象,該物件封裝了將傳送到伺服器的確切位元組。
要使用PreparedRequest,請建立一個請求物件並使用prepare() 方法。為了清晰起見,可以對輸出進行美化:
<code class="python">import requests # Create a request req = requests.Request('POST', 'http://stackoverflow.com', headers={'X-Custom': 'Test'}, data='a=1&b=2') # Prepare the request (encodes it to bytes) prepared = req.prepare() # Define a function to prettify the POST request def pretty_print_POST(req): """Prints the request in a human-readable format.""" print('{}\n{}\r\n{}\r\n\r\n{}'.format( '-----------START-----------', req.method + ' ' + req.url, '\r\n'.join('{}: {}'.format(k, v) for k, v in req.headers.items()), req.body, )) # Prettify the prepared request pretty_print_POST(prepared) # Send the actual request using a Session object s = requests.Session() s.send(prepared)</code>
此程式碼將完整的HTTP 請求列印為:
-----------START----------- POST http://stackoverflow.com/ Content-Length: 7 X-Custom: Test a=1&b=2
此方法允許檢查發送到伺服器的請求,從而方便調試和理解請求-響應生命週期。
以上是如何使用 Python 請求列印原始 HTTP 請求?的詳細內容。更多資訊請關注PHP中文網其他相關文章!