The Open Event Android project helps event organizers to generate Apps (apk format) using Open Event App generator for their events/conferences by providing API endpoint or zip generated using Open Event server.
The Open Event Android project has an assets folder which contains sample JSON files for the event, which are used to load the data when there is no Internet connection. When an organizer generates an app with the help of an API endpoint, then all the assets, e.g. images, are removed and because of it generated don’t have sample JSON files. So if the device is offline then it will not load the data from the assets (issue #1606). The app should contain sample event JSON files and should be able to load the data without the Internet connection.
One solution to this problem is to fetch all the event data (JSON files) from the server and save it to the assets folder while generating the app using Open Event App generator. So in this blog post, I explain how to make a simple request using Python and save the response in a file.
Making a simple request
To fetch the data we need to make a request to the server and the server will return the response for that request. Here’s step to make a simple request,
Import Requests module using,
import requests
The requests module has get, post, put, delete, head, options to make a request. Example:
requests.get(self.api_link + '/' + end_point)
Here all method returns requests.Response object. We can get all the information we need from this object.
So we can make response object like this,
response = requests.get(self.api_link + '/' + end_point)
Saving response in a file
For saving response in a file we need to open/create a file for writing.
Create or open file
The open() method is used for opening file. It takes two arguments one is file name and second in access mode which determines the mode in which the file has to be opened, i.e., read, write, append, etc.
file = open(path/to/the/file, "w+")
Here “w+” overwrites the existing file if the file exists. If the file does not exist, it creates a new file for reading and writing.
Write and close file
Now write the content of the response using the write() method of file object then close the file object using the close() method. The close() method flushes any unwritten information and closes the file object.
file.write(response.text) file.close()
Here response.text gives the content of the response in Unicode format.
Conclusion
The requests.Response object contains much more data like encoding, status_code, headers etc. For more info about request and response refer additional resources given below.
Additional Resources
- Request: http://docs.python-requests.org/en/master/api/
- Response: http://docs.python-requests.org/en/master/api/#requests.Response
- Open Event Android PR: https://github.com/fossasia/open-event-android/pull/1608/files