Accessing the HTTP Request Object

Q

How to access the HTTP request from the HTTP response object? I want to see what was actually delivered to the server.

✍: FYIcenter.com

A

To see what was actually delivered to the server, you can take the "request" property of the response object:

>>> r = requests.post()
>>> q = r.request # the requests.models.PreparedRequest object

"requests" module supports the following properties and functions on requests.models.PreparedRequest objects:

>>> r = requests.post()
>>> q = r.request # the requests.models.PreparedRequest object
>>> q.headers # represents the request headers as a dictionary
>>> q.body    # represents the request body as a strings
>>> q.url     # represents the url where this request was delivered
>>> q.method  # represents the HTTP method used 
>>> dir(q)
['__class__', ..., 'body', 'copy', 'deregister_hook', 'headers',
 'hooks', 'method', 'path_url', 'prepare', 'prepare_auth', 
 'prepare_body', 'prepare_content_length', 'prepare_cookies', 
 'prepare_headers', 'prepare_hooks', 'prepare_method', 'prepare_url', 
 'register_hook', 'url'
]

Here is a Python example on how to see how form data was actually encoded in the HTTP request body:

>>> import requests
>>> form = {'userid':'fyi', 'password':'center'}
>>> r = requests.post('http://httpbin.org/post',data=form)
>>> q = r.request
>>> b = q.body
>>> print(b)
userid=fyi&password=center

 

Python Tutorials

Sending an HTTP POST Request

'requests' Module - HTTP for Humans

⇑⇑ Python Tutorials

2018-08-14, 145👍, 0💬