Networking with the Volley Library - meswapnilwagh/android_guides GitHub Wiki
Volley is a library that makes networking for Android apps easier and most importantly, faster. Volley Library was announced by Ficus Kirkpatrick at Google I/O '13! It was first used by the Play Store team in Play Store Application and then they released it as an Open Source Library.
- Volley can pretty much do everything with that has to do with Networking in Android.
- Volley automatically schedules all network requests such as fetching responses for image from web.
- Volley provides transparent disk and memory caching.
- Volley provides powerful cancellation request API for canceling a single request or you can set blocks of requests to cancel.
- Volley provides powerful customization abilities.
- Volley provides debugging and tracing tools.
Adding Volley to our app/build.gradle file:
compile 'com.android.volley:volley:1.0.0'
Volley has two classes that you will have to deal with:
-
RequestQueue
- Requests are queued up here to be executed -
Request
(and any extension of it) - Constructing an network request
A Request object comes in three major types:
- JsonObjectRequest — To send and receive JSON Object from the server
- JsonArrayRequest — To receive JSON Array from the server
- ImageRequest - To receive an image from the server
- StringRequest — To retrieve response body as String (ideally if you intend to parse the response by yourself)
All requests in Volley are placed in a queue first and then processed, here is how you will be creating a request queue:
public MainActivity extends Activity {
private RequestQueue mRequestQueue;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_screen_layout);
// ...
mRequestQueue = Volley.newRequestQueue(this);
}
}
After this step you are ready to create your Request
objects which represents a desired request to be executed. Then we add that request onto the queue.
public class MainActivity extends Activity {
private RequestQueue mRequestQueue;
// ...
private void fetchJsonResponse() {
// Pass second argument as "null" for GET requests
JsonObjectRequest req = new JsonObjectRequest("http://ip.jsontest.com/", null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
String result = "Your IP Address is " + response.getString("ip");
Toast.makeText(MainActivity.this, result, Toast.LENGTH_SHORT).show();
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.e("Error: ", error.getMessage());
}
});
/* Add your Requests to the RequestQueue to execute */
mRequestQueue.add(req);
}
}
And that will execute the request to the server and respond back with the result as specified in the Response.Listener
callback. For a more detailed look at Volley, check out this volley tutorial.