How to send urlencoded parameters in POST request in python How to send urlencoded parameters in POST request in python flask flask

How to send urlencoded parameters in POST request in python


You don't need to explicitly encode it, simply pass a dict.

>>> r = requests.post(URL, data = {'key':'value'})

From the documentation:

Typically, you want to send some form-encoded data — much like an HTML form. To do this, simply pass a dictionary to the data argument. Your dictionary of data will automatically be form-encoded when the request is made


Set the Content-Type header to application/x-www-form-urlencoded.

headers = {'Content-Type': 'application/x-www-form-urlencoded'}r = requests.post(URL, data=params, headers=headers)


Just to an important thing to note is that for nested json data you will need to convert the nested json object to string.

data = { 'key1': 'value',         'key2': {                'nested_key1': 'nested_value1',                'nested_key2': 123         }       }

The dictionary needs to be transformed in this format

inner_dictionary = {                'nested_key1': 'nested_value1',                'nested_key2': 123         }data = { 'key1': 'value',         'key2': json.dumps(inner_dictionary)       }r = requests.post(URL, data = data)