Home >Backend Development >Python Tutorial >How to Print Raw HTTP Requests with Python Requests?
Printing Raw HTTP Requests with Python Requests
When working with the requests module, it may be necessary to view the raw, detailed information of an HTTP request beyond just the headers. This article explores how to print out the complete HTTP request, including the request line, headers, and content.
Solution: Using PreparedRequest Object
Since version 1.2.3, the requests module introduced the PreparedRequest object. This object represents the exact bytes that will be sent to the server. By using this object, it is possible to pretty-print a request as follows:
<code class="python">import requests req = requests.Request('POST','http://stackoverflow.com',headers={'X-Custom':'Test'},data='a=1&b=2') prepared = req.prepare() def pretty_print_POST(req): 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, )) pretty_print_POST(prepared)</code>
This code prints the complete HTTP request in a human-readable format:
-----------START----------- POST http://stackoverflow.com/ Content-Length: 7 X-Custom: Test a=1&b=2
The PreparedRequest object provides a detailed look at the constructed HTTP request, which can be useful for debugging or analyzing traffic.
To actually send the request, you can use the following code:
<code class="python">s = requests.Session() s.send(prepared)</code>
The above is the detailed content of How to Print Raw HTTP Requests with Python Requests?. For more information, please follow other related articles on the PHP Chinese website!