Conexiónes con API Android Studio con Volley

La conexión con servicios externos (API/Rest) es fundamental hoy en día para las aplicaciones. Cada vez más dispostivos tienen acceso a una conexión con internet constante y es por eso que las apps ya cargan y descargan casi la totalidad de los datos que utilizan en servidores externos.

La mayor parte de la carga computacional de las operaciones que se han de realizar (o al menos las más pesadas) recae hoy en día sobre los servidores, alojados a cientos, o a veces miles de kilómetros de nuestros usuarios.

Una de las formas más habituales de interconectar las apps con las bases de datos de las aplicaciones, donde guardamos información de los usuarios y de todo el sistema, es utilizar una API de comunicación de tipo REST.

¿Cómo funciona una API/Rest?

Este sistema permite el acceso externo a unos servicios que son los que se ocupan de interoperar con la base de datos; es decir, actúan como mediadores habilitando ciertas funciones controladas a los operadores externos.

Esta es una forma adecuada de proporcionar seguridad al sistema, ya que las apps ejecutándose en los terminales del usuario no van a poder ejecutar funciones peligrosas, aun cuando el código se vea comprometido y manipulado. Los servicios web solo van a proporcionar ciertas operaciones en el sistema, y es una responsabilidad del backend y del sistema el no habilitar funcionalidades peligrosas.

Servicios Web

Los servicios web van a ser los puntos de conexión donde la intercomunicación entre las apps y el servidor se va a hacer posible. Estos servicios web van a habilitarnos métodos como por ejemplo un login, un cambio de nombre de perfil, o, incluso, obtener listados de productos. El desarrollador de la base de datos y de la API nos tendrá que proporcionar una documentación clara y estándar sobre cuáles son los servicios que hay, qué puntos de acceso tienen (URL) y qué parámetros necesitan. Además, tendremos que tener en cuenta el formato de la salida para poder operar con esos datos en nuestra aplicación.

Normalmente hoy en día los servicios web devuelven la respuesta en formato JSON, por lo que es recomendable saber cómo leerlo y transformar los datos a objetos Java para poder manipularlos como queramos. Si no sabes cómo trabajar con JSON te dejo un enlace al vídeo de walkiria apps: trabajar con JSON en Android Studio.

Volley Android Studio

Volley es una librería que nos va a permitir hacer conexiones con servicios web externos de manera fácil y rápida. También puedes utilizar retrofit, que funciona de manera muy similar. A mí me gusta Volley porque es simple y nunca me ha dado problemas y por eso la sigo utilizando aún hoy en día en todos las aplicaciones que usan una API/Rest.

Para hacer una petición a un servicio con Volley vas a necesitar los siguientes datos:

  • Una instancia del context de la aplicación que se está ejecutando.
  • La URL del servicio al que vas a llamar.
  • El método de conexión con el servicio (GET o POST).
  • Parámetros (POST, o GET en la URL).

También deberás tener en cuenta la implementación de los siguientes métodos callback:

  • OnResponse: Si todo ha ido bien y la petición ha sido satisfactoria. Recuerda que esto no excluye de errores en la petición por no cumplir los parámetros de la API, simplemente indica que la conexión con el servicio en esa URL se ha realizado.
  • OnError: Si no se ha podido conectar con el servicio por algún motivo.

Para hacer una petición Volley, tenemos que añadir un objeto de tipo JSONObjectRequest a la cola de peticiones de volley, tal y como se muestra en el ejemplo:

RequestQueue queue = Volley.newRequestQueue(this);
        String url = SERVICE_URL;
        StringRequest stringRequest = new StringRequest(Request.Method.POST, url,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        try {
                            JSONObject resp = new JSONObject(response);
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(com.android.volley.error.VolleyError error) {
            }
        }) {
            @Override
            public Map<String, String> getHeaders() throws AuthFailureError {
                Map<String, String> params = new HashMap<String, String>();
                params.put("PARAM1", PARAM);
                return params;
            }

            @Override
            protected Map<String, String> getParams() {
                HashMap<String, String> params = new HashMap<String, String>();
                return params;
            }
        };
        stringRequest.setShouldCache(false);
        queue.add(stringRequest);

En este ejemplo vemos cómo hacer una petición POST usando Volley. Recuerda que tendrás que instalar la librería Volley a través del repositorio añadiendo la siguiente línea al fichero build.gradel de tu proyecto en la sección dependencies.

implementation 'dev.dworks.libs:volleyplus:+'

Hasta aquí todo lo relacionado con Volley y web services. En mi curso de Android en youtube te enseño mucho más, e, incluso, te ofreco el código de una implementación propia que deja el código muy limpio y fácil. ¿Quieres verlo? Mira el vídeo:

6 comentarios en «Conexiónes con API Android Studio con Volley»

Deja un comentario