To master Android, we can’t depend on a solution such as Parse. As developers, we must be prepared to face different server-side solutions. We can’t always work with ParseObjects because we need to be able to do an HTTP Post request and consume the data in the JSON or XML format. However, this doesn’t mean that we have to do all of this manually; we can use Google’s official libraries to help us with parsing the data and the network requests.

For this, we will take a look at Google Volley, a powerful library, to manage our network requests. We will also discuss OkHttp, an ultrafast HTTP client, and combining the two them to get an amazing solution for network requests.

Google Volley

According to the official definition and list of features from, “Volley is an HTTP library that makes networking for Android apps easier and, most importantly, faster“.

Volley offers the following benefits:

  • Automatic scheduling of network requests
  • Multiple concurrent network connections
  • A transparent disk and memory response caching with a standard HTTP cache coherence
  • Support for request prioritization
  • Cancellation of request API; this means that you can cancel a single request, or set blocks or scopes of requests to cancel
  • Ease of customization; for example, for retry and backoff
  • Strong ordering, which makes it easy to correctly populate your UI with data fetched asynchronously from the network
  • Debugging and tracing tools

Before Volley was born, managing network requests in Android was a hard task. Almost every application performs network requests. Features such as customizing retries—in case a connection fails and we need to try again—and managing concurrent network connections usually needed to be implemented manually by the developer. Nowadays, we are used to these kinds of libraries, but if we think about the situation some years ago, Volley is an excellent solution to this problem.

Before taking a look at how to create a request, we need to understand the concept of the Volley request queue object, RequestQueue. Every request performed by Volley must be added to this queue in order for it to be executed. The idea behind this is to have one single request queue in our application where all the network requests can be added and accessed by us from any part of our app. Take a look at the following request:

// Instantiate the RequestQueue.
RequestQueue queue = Volley.newRequestQueue(this);