Home > Article > Backend Development > How to Access the Full HTTP Request in Python Applications?
When encountering API-related errors, it often becomes necessary to provide the complete HTTP request to the support team for further investigation. This includes not only the response payload but also the request headers.
In Python applications, this can be achieved using the latest versions of the requests library (1.x and higher). Requests leverages the logging module to control the verbosity of HTTP requests. By enabling debug mode at the http.client level, you can capture the entire request, including headers and data.
The following code snippet exemplifies how to enable debug logging:
import requests import logging # Enable HTTP client debugging http_client.HTTPConnection.debuglevel = 1 # Configure loggers logging.basicConfig() logging.getLogger().setLevel(logging.DEBUG) requests_log = logging.getLogger("requests.packages.urllib3") requests_log.setLevel(logging.DEBUG) requests_log.propagate = True # Make an HTTP request requests.get('https://httpbin.org/headers')
When the code is executed, you will observe the following debug output:
INFO:requests.packages.urllib3.connectionpool:Starting new HTTPS connection (1): httpbin.org send: 'GET /headers HTTP/1.1\r\nHost: httpbin.org\r\nAccept-Encoding: gzip, deflate, compress\r\nAccept: */*\r\nUser-Agent: python-requests/1.2.0 CPython/2.7.3 Linux/3.2.0-48-generic\r\n\r\n' reply: 'HTTP/1.1 200 OK\r\n' header: Content-Type: application/json header: Date: Sat, 29 Jun 2013 11:19:34 GMT header: Server: gunicorn/0.17.4 header: Content-Length: 226 header: Connection: keep-alive DEBUG:requests.packages.urllib3.connectionpool:"GET /headers HTTP/1.1" 200 226
This output provides a detailed log of the request, including all headers and the response status code.
The above is the detailed content of How to Access the Full HTTP Request in Python Applications?. For more information, please follow other related articles on the PHP Chinese website!