Using headers with the Python requests library's get method
Question:
So I recently stumbled upon this great library for handling HTTP requests in Python; found here http://docs.python-requests.org/en/latest/index.html.
I love working with it, but I can’t figure out how to add headers to my get requests. Help?
Answers:
Seems pretty straightforward, according to the docs on the page you linked (emphasis mine).
requests.get(url, params=None, headers=None, cookies=None, auth=None,
timeout=None)
Sends a GET request.
Returns Response
object.
Parameters:
- url – URL for the new
Request
object.
- params – (optional)
Dictionary of GET Parameters to send
with the Request
.
- headers – (optional)
Dictionary of HTTP Headers to send
with the Request
.
- cookies – (optional)
CookieJar object to send with the
Request
.
- auth – (optional) AuthObject
to enable Basic HTTP Auth.
- timeout –
(optional) Float describing the
timeout of the request.
According to the API, the headers can all be passed in with requests.get()
:
import requests
r=requests.get("http://www.example.com/", headers={"Content-Type":"text"})
This answer taught me that you can set headers for an entire session:
s = requests.Session()
s.auth = ('user', 'pass')
s.headers.update({'x-test': 'true'})
# both 'x-test' and 'x-test2' are sent
s.get('http://httpbin.org/headers', headers={'x-test2': 'true'})
-
Go to http://myhttpheader.com
-
copy attributes – typically ‘Accept-Language’ and ‘User-Agent’.
-
Wrap them in the dictionary:
headers = { 'Accept-Language' : content-copied-from-myhttpheader,
'User-Agent':content-copied-from-myhttpheader}
-
pass headers in your request
requests.get(url=your_url,headers=headers)
So I recently stumbled upon this great library for handling HTTP requests in Python; found here http://docs.python-requests.org/en/latest/index.html.
I love working with it, but I can’t figure out how to add headers to my get requests. Help?
Seems pretty straightforward, according to the docs on the page you linked (emphasis mine).
requests.get(url, params=None, headers=None, cookies=None, auth=None,
timeout=None)Sends a GET request.
ReturnsResponse
object.Parameters:
- url – URL for the new
Request
object.- params – (optional)
Dictionary of GET Parameters to send
with theRequest
.- headers – (optional)
Dictionary of HTTP Headers to send
with theRequest
.- cookies – (optional)
CookieJar object to send with the
Request
.- auth – (optional) AuthObject
to enable Basic HTTP Auth.- timeout –
(optional) Float describing the
timeout of the request.
According to the API, the headers can all be passed in with requests.get()
:
import requests
r=requests.get("http://www.example.com/", headers={"Content-Type":"text"})
This answer taught me that you can set headers for an entire session:
s = requests.Session()
s.auth = ('user', 'pass')
s.headers.update({'x-test': 'true'})
# both 'x-test' and 'x-test2' are sent
s.get('http://httpbin.org/headers', headers={'x-test2': 'true'})
-
Go to http://myhttpheader.com
-
copy attributes – typically ‘Accept-Language’ and ‘User-Agent’.
-
Wrap them in the dictionary:
headers = { 'Accept-Language' : content-copied-from-myhttpheader, 'User-Agent':content-copied-from-myhttpheader}
-
pass headers in your request
requests.get(url=your_url,headers=headers)