from requests import post
foo = post('http://httpbin.org/post', data = {'key':'value'})
Will perform a simple HTTP POST operation. Posted data can be inmost formats, however key value pairs are most prevalent.
Headers
Headers can be viewed:
print(foo.headers)
An example response:
{'Content-Length': '439', 'X-Processed-Time': '0.000802993774414', 'X-Powered-By': 'Flask', 'Server': 'meinheld/0.6.1', 'Connection': 'keep-alive', 'Via': '1.1 vegur', 'Access-Control-Allow-Credentials': 'true', 'Date': 'Sun, 21 May 2017 20:56:05 GMT', 'Access-Control-Allow-Origin': '*', 'Content-Type': 'application/json'}
Headers can also be prepared before post:
headers = {'Cache-Control':'max-age=0',
'Upgrade-Insecure-Requests':'1',
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36',
'Content-Type':'application/x-www-form-urlencoded',
'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Referer':'https://www.groupon.com/signup',
'Accept-Encoding':'gzip, deflate, br',
'Accept-Language':'es-ES,es;q=0.8'
}
foo = post('http://httpbin.org/post', headers=headers, data = {'key':'value'})
Encoding
Encoding can be set and viewed in much the same way:
print(foo.encoding)
'utf-8'
foo.encoding = 'ISO-8859-1'
SSL Verification
Requests by default validates SSL certificates of domains. This can be overridden:
foo = post('http://httpbin.org/post', data = {'key':'value'}, verify=False)
Redirection
Any redirection will be followed (e.g. http to https) this can also be changed:
foo = post('http://httpbin.org/post', data = {'key':'value'}, allow_redirects=False)
If the post operation has been redirected, this value can be accessed:
print(foo.url)
A full history of redirects can be viewed:
print(foo.history)