
- Requests Tutorial
- Requests - Home
- Requests - Overview
- Requests - Environment Setup
- Requests - How Http Requests Work?
- Requests - Working with Requests
- Handling Response for HTTP Requests
- Requests - HTTP Requests Headers
- Requests - Handling GET Requests
- Handling POST, PUT, PATCH & DELETE Requests
- Requests - File Upload
- Requests - Working with Cookies
- Requests - Working with Errors
- Requests - Handling Timeouts
- Requests - Handling Redirection
- Requests - Handling History
- Requests - Handling Sessions
- Requests - SSL Certification
- Requests - Authentication
- Requests - Event Hooks
- Requests - Proxy
- Requests - Web Scraping using Requests
- Requests Useful Resources
- Requests - Quick Guide
- Requests - Useful Resources
- Requests - Discussion
Handling Response for HTTP Requests
In this chapter, we will get into more details of the response received from the requests module. We will discuss the following details −
- Getting Response
- JSON Response
- RAW Response
- Binary Response
Getting Response
We will make a request to the URL using request.get() method.
import requests getdata = requests.get('https://jsonplaceholder.typicode.com/users');
The getdata has the response object. It has all the details of the response. We can get a response in 2 ways using (text) and (.content). Using response.text will give you the data back in text format as shown below −
Example
E:\prequests>python makeRequest.py [ { "id": 1, "name": "Leanne Graham", "username": "Bret", "email": "Sincere@april.biz", "address": { "street": "Kulas Light", "suite": "Apt. 556", "city": "Gwenborough", "zipcode": "92998-3874", "geo": { "lat": "-37.3159", "lng": "81.1496" } }, "phone": "1-770-736-8031 x56442", "website": "hildegard.org", "company": { "name": "Romaguera-Crona", "catchPhrase": "Multi-layered client-server neural-net", "bs": "harness real-time e-markets" } }, ]
You will see the response is the same, as how it would have appeared in the browser when you do view source for the URL as shown below −

You can also try out .html URL and see the content using response.text, it will be the same as the view source content for the .html URL in the browser.
Now, let us try response.content for the same URL and see the output.
Example
import requests getdata = requests.get('https://jsonplaceholder.typicode.com/users') print(getdata.content)
Output
E:\prequests>python makeRequest.py b'[\n {\n "id": 1,\n "name": "Leanne Graham",\n "username": "Bret",\n "email": "Sincere@april.biz",\n "address": {\n "street": "Kulas Light ",\n "suite": "Apt. 556",\n "city": "Gwenborough",\n "zipcode": " 92998-3874",\n "geo": {\n "lat": "-37.3159",\n "lng": "81.149 6"\n }\n },\n "phone": "1-770-736-8031 x56442",\n "website": "hild egard.org",\n "company": {\n "name": "Romaguera-Crona",\n "catchPhr ase": "Multi-layered client-server neural-net",\n "bs": "harness real-time e-markets"\n }\n },\n {\n "id": 2,\n "name": "Ervin Howell",\n "username": "Antonette",\n "email": "Shanna@melissa.tv",\n "address": {\n "street": "Victor Plains",\n "suite": "Suite 879",\n "city": "Wisoky burgh",\n "zipcode": "90566-7771",\n "geo": {\n "lat": "-43.950 9",\n "lng": "-34.4618"\n }\n },\n "phone": "010-692-6593 x091 25",\n "website": "anastasia.net",\n "company": {\n "name": "Deckow-Crist", \n "catchPhrase": "Proactive didactic contingency",\n "bs": "synergize scalable supply-chains"\n }\n },\n {\n "id": 3,\n "name": "Clementine Bauch",\n "username": "Samantha",\n "email": "Nathan@yesenia.net", \n "address": {\n "street": "Douglas Extension",\n "suite": "Suite 847",\n "city": "McKenziehaven",\n "zipcode": "59590-4157",\n "ge o": {\n "lat": "-68.6102",\n "lng": "-47.0653"\n }\n },\n
The response is given in bytes. You will get a letter b at the start of the response. With the requests module, you can get the encoding used and also change the encoding if required. For example, to get the encoding you can use response.encoding.
print(getdata.encoding)
Output
utf-8
You can change the encoding as follows − You can use the encoding of your choice.
getdata.encoding = 'ISO-8859-1'
JSON Response
You can also get the response for the Http request in json format by using response.json() method as follows −
Example
import requests getdata = requests.get('https://jsonplaceholder.typicode.com/users') print(getdata.json())
Output
E:\prequests>python makeRequest.py [{'id': 1, 'name': 'Leanne Graham', 'username': 'Bret', 'email': 'Sincere@april. biz', 'address': {'street': 'Kulas Light', 'suite': 'Apt. 556', 'city': 'Gwenborough', 'zipcode': '92998-3874', 'geo': {'lat': '-37.3159', 'lng': '81.1496'}}, ' phone': '1-770-736-8031 x56442', 'website': 'hildegard.org', 'company': {'name': 'Romaguera-Crona', 'catchPhrase': 'Multi-layered client-server neural-net', 'bs': 'harness real-time e-markets'}}]
RAW Response
In case you need the raw response for the Http URL you can make use of response.raw, also add stream = True inside the get method as shown below −
Example
import requests getdata = requests.get('https://jsonplaceholder.typicode.com/users', stream=True) print(getdata.raw)
Output
E:\prequests>python makeRequest.py <urllib3.response.HTTPResponse object at 0x000000A8833D7B70>
To read for more content from the raw data you can do so as follows −
print(getdata.raw.read(50))
Output
E:\prequests>python makeRequest.py b'\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\x03\x95\x98[o\xe38\x12\x85\xdf\xe7W\x10y\ xda\x01F\x82.\xd4m\x9f\xdc\x9dd\xba\xb7\x93\xf4\x06q\xef4\x06\x83A@K\x15\x89m'
Binary Response
To get a binary response we can make use of response.content.
Example
import requests getdata = requests.get('https://jsonplaceholder.typicode.com/users') print(getdata.content)
Output
E:\prequests>python makeRequest.py b'[\n {\n "id": 1,\n "name": "Leanne Graham",\n "username": "Bret",\n "email": "Sincere@april.biz",\n "address": {\n "street": "Kulas Light ",\n "suite": "Apt. 556",\n "city": "Gwenborough",\n "zipcode": " 92998-3874",\n "geo": {\n "lat": "-37.3159",\n "lng": "81.149 6"\n }\n },\n "phone": "1-770-736-8031 x56442",\n "website": "hildegard.org",\n "company": {\n "name": "Romaguera-Crona",\n "catchPhr ase": "Multi-layered client-server neural-net",\n "bs": "harness real-time e-markets"\n }\n },\n {\n "id": 2,\n "name": "Ervin Howell",\n "us ername": "Antonette",\n "email": "Shanna@melissa.tv",\n "address": {\n "street": "Victor Plains",\n "suite": "Suite 879",\n "city": "Wisoky burgh",\n "zipcode": "90566-7771",\n "geo": {\n "lat": "-43.950 9",\n "lng": "-34.4618"\n }\n },\n "phone": "010-692-6593 x091 25",\n "website": "anastasia.net",\n "company": {\n "name": "Deckow-Crist", \n "catchPhrase": "Proactive didactic contingency",\n "bs": "syn ergize scalable supply-chains"\n }\n },\n {\n "id": 3,\n "name": "Clementine Bauch",\n "username": "Samantha",\n "email": "Nathan@yesenia.net", \n "address": {\n "street": "Douglas Extension",\n "suite": "Suite 847",\n "city": "McKenziehaven",\n "zipcode": "59590-4157",\n " geo": {\n "lat": "-68.6102",\n "lng": "-47.0653"\n }\n },\n
The response is given in bytes. You will get a letter b at the start of the response. The binary response is mostly used for non-text requests.