Richieste HTTP in Android con Volley

Richieste HTTP in Android con Volley

Oggi vediamo qualche esempio introduttio alla libreria Volley, una delle librerie più usate per richieste HTTP in Android.

E' talmente usata, che ha anche una pagina sulla documentazione ufficiale di Android.

Per installare la lilbreria, se usate Android Studio, aggiungete questa riga al file build.gradle (Module: app):

dependencies {
    ..............
    compile 'com.android.volley:volley:1.0.0'
    ..............
}

Bene, a questo vediamo un esempio banale di richiesta GET.

Interrogheremo il servizio OMDB, che ci restituirà i dati in formato JSON:

import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.Volley;
import org.json.JSONObject;
 
public class MainActivity extends AppCompatActivity {
 
    RequestQueue requestQueue;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        requestQueue = Volley.newRequestQueue(this);
        getContent();
    }
 
    private void getContent() {
        new AsyncTask<Void, Void, Void>() {
            @Override
            protected Void doInBackground(Void... params) {
                String strUrl = "http://www.omdbapi.com/?t=batman&y=&plot=short&r=json";
                JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, strUrl, null,
                        new Response.Listener() {
                            @Override
                            public void onResponse(JSONObject response) {
                                Log.d("JSON: ", response.toString());
                            }
                        },
                        new Response.ErrorListener() {
                            @Override
                            public void onErrorResponse(VolleyError error) {
                                Log.d("ERRORE: ", error.getMessage());
                            }
                        });
                requestQueue.add(jsonObjectRequest);
                return null;
            }
        }.execute();
    }
}

Alla fine della richiesta, intercettiamo la stringa JSON o l'errore.

Al posto JsonObjectRequest possiamo usare JsonArrayRequest.

Se dobbiamo trattare testo semplice, possiamo usare StringRequest.

Se invece dobbiamo lavorare con le immagini, abbiamo a disposizione ImageRequest.

Inoltre, in questo caso, possiamo avvalerci della classe di helper ImageLoader, che è molto utile quando dobbiamo effettuare parecchie richieste di immagini.

Infine, Volley mette a disposizione anche un componente grafico specifico per le immagini, che risulta più performante che si chiama NetworkImageView.

Insomma, è sicuramente una classe da tenere in considerazione, soprattutto se facciamo parecchie richieste, in quanto molto perfomante e completa.

Enjoy!