Last Updated: May 18, 2020
·
5.16K
· dmytrodanylyk

Volley - Code Snippets

Introduction

For details check out Google I/O 2013 - Volley: Easy, Fast Networking for Android.

Add Volley library to your project from git repository.

git clone https://android.googlesource.com/platform/frameworks/volley

Basic concept

First we need to create Request Queue object.

RequestQueue queue = Volley.newRequestQueue(this);

Then create request of appropriate type, here we are using String Request.

Uri.Builder uri = new Uri.Builder();
uri.scheme("http");
uri.authority("httpbin.org");
uri.path("get");
uri.appendQueryParameter("name", "Jon Doe");
uri.appendQueryParameter("age", "21");
String url = uri.build().toString();

StringRequest request = new StringRequest(
        Request.Method.GET,
        url,
        createSuccessListener(),
        createErrorListener())

Finally add request to the dispatch queue.

requestQueue.add(request);

Error listener is the same for any kind of request.

private static Response.ErrorListener createErrorListener() {
    return new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Log.d(TAG, "Error Response code: " + error.getMessage());
        }
    };
}

Success listener varies, according to request type, for String Request it will return String object.

private static Response.Listener<String> createSuccessListener() {
    return new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
            // TODO parse response
        }
    };
}

POST Request

To pass parameters to POST request you should override Request.getParams() method.

Uri.Builder uri = new Uri.Builder();
uri.scheme("http");
uri.authority("httpbin.org");
uri.path("post");
String url = uri.build().toString();

StringRequest request = new StringRequest(
        Request.Method.POST,
        url,
        createSuccessListener(),
        createErrorListener()) {

    @Override
    protected Map<String, String> getParams() throws AuthFailureError {

        Map<String, String> map = new HashMap<String, String>();
        map.put("name", "Jon Doe");
        map.put("age", "21");

        return map;
    }
};

JSON Request

For JSON we have two types of requests JsonObjectRequest and JsonArrayRequest

JsonObjectRequest request = new JsonObjectRequest(
        Request.Method.GET,
        url,
        null,
        createSuccessListener(),
        createErrorListener());

HTTP Basic Authentification

Set a default authenticator. It will be called whenever the realm that the URL is pointing to requires authorization.

Authenticator.setDefault(new Authenticator() {
    @Override
    protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication("user", "passwd".toCharArray());
    }
});

Timeout and Retry

request.setRetryPolicy(
        new DefaultRetryPolicy(
        DefaultRetryPolicy.DEFAULT_TIMEOUT_MS,
        DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
        DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));

More is coming