Cómo utilizar una API web desde su aplicación de Android

  Web API en Android

Una Web API es una "interfaz de programación de aplicaciones" en línea que permite a los desarrolladores interactuar con servicios externos. Estos son los comandos que el desarrollador del servicio ha establecido que se utilizarán para acceder a ciertas funciones de su programa. Se llama interfaz porque una buena API debe tener comandos que hagan intuitiva su interacción.

Un ejemplo sería si queremos obtener información sobre un usuario desde su cuenta de redes sociales. Es probable que esa plataforma de redes sociales tenga una API web que los desarrolladores utilizarán para solicitar esos datos. Otras API de uso común manejan cosas como publicidad (AdMob), aprendizaje automático (ML Kit) y almacenamiento en la nube.

Es fácil ver cómo la interacción con este tipo de servicios podría extender la funcionalidad de una aplicación. De hecho, la gran mayoría de las aplicaciones exitosas en Play Store utilizarán al menos una API web.

En esta publicación, exploraremos cómo usar una API web desde una aplicación de Android.

Cómo funciona una API web

La mayoría de las API funcionan con XML o JSON. Estos lenguajes nos permiten enviar y recuperar grandes cantidades de información útil en forma de objetos.

XML es un lenguaje de marcado extensible. Si es un desarrollador de Android, probablemente ya esté familiarizado con XML al crear sus diseños y guardar variables.

XML es fácil de entender y generalmente coloca las claves entre corchetes triangulares, seguidas de sus valores. Se parece un poco a HTML:


  Jeff 
  32 

JSON, por otro lado, significa "Javascript Object Notation". Es un atajo para enviar datos en línea. Como XML o un archivo CSV, se puede utilizar para enviar "pares de atributo / valor".

Sin embargo, la sintaxis aquí parece un poco diferente:

[{client: {“name”:”Jeff”, “age”: 32}}]

Estos son "objetos de datos" como entidades conceptuales (personas en este caso) que pueden describirse mediante pares clave / valor. Los usamos en nuestras aplicaciones de Android convirtiéndolos en objetos como lo haríamos normalmente, con el uso de clases.

Ver también: Cómo usar clases en Java

Para verlo en acción, necesitamos encontrar una API web que podamos usar fácilmente. En este ejemplo, usaremos JSON Placeholder. Esta es una API REST específica de prueba y prototipo gratuita, ¡perfecta para aprender una nueva habilidad! REST es un "estilo" arquitectónico particular que se ha convertido en un estándar para la comunicación a través de redes. Los sistemas que cumplen con REST se denominan "RESTful" y comparten ciertas características. Sin embargo, no tiene que preocuparse por esto ahora mismo.

Configuración de nuestro proyecto para Retrofit 2

Para este ejemplo, también usaremos algo llamado Retrofit 2. Retrofit 2 es un cliente HTTP extremadamente útil para Android que permite que las aplicaciones se conecten a una API web de forma segura. y con mucho menos código de nuestra parte. Esto se puede usar, por ejemplo, para mostrar Tweets de Twitter o para verificar el clima. Reduce significativamente la cantidad de trabajo que tenemos que hacer para que funcione.

Ver también: Consumo de API: Introducción a Retrofit en Android

En primer lugar, necesitamos agregar permiso de Internet a nuestro manifiesto de Android para asegurarnos de que nuestra aplicación pueda conectarse en línea. Esto es lo que necesita incluir:

También necesitamos agregar una dependencia si queremos que Retrofit 2 funcione en nuestra aplicación. Luego, en el archivo build.gradle de nivel de módulo, agregue:

  implementación & # 39; com.squareup.retrofit2: retrofit: 2.4.0 & # 39; 

También necesitamos algo llamado Gson:

  implementación & # 39; com.squareup.retrofit2: converter-gson: 2.4.0 & # 39; 

Gson es lo que convertirá los datos JSON en un objeto Java para nosotros (un proceso llamado deserialización). Podríamos hacerlo manualmente, ¡pero usar herramientas como esta hace la vida mucho más fácil!

En realidad, hay versiones posteriores de Retrofit que realizan algunos cambios. Si desea estar siempre actualizado, visite el sitio web oficial.

Convertir JSON en objeto Java

Una "ruta" es una URL que representa un punto final para la API. Si echamos un vistazo al marcador de posición JSON, verá que tenemos opciones como "/ posts" y "/ comments? PostId = 1". ¡Es probable que haya visto URL como esta mientras navega por la web!

Haga clic en / posts y verá una gran cantidad de datos en formato JSON. Este es un texto ficticio que imita el aspecto de una página llena de publicaciones en redes sociales. Es la información que queremos obtener de nuestra aplicación y luego mostrarla en la pantalla.

  [{
    "userId": 1,
    "id": 1,
    "title": "sunt aut facere repellat providident Occaecaticepturi optio reprehenderit",
    "body": "quia et alzipit  nsuscipit recusandae logro expedita et cum  nreprehenderit molestiae ut ut quas totam  nnostrum rerum est autem sunt rem eveniet architecto"
  },
  {
    "userId": 1,
    "id": 2,
    "título": "qui est esse",
    "cuerpo": "est rerum tempore vitae  nsequi sint nihil reprehenderit dolor beatae ea dolores neque  nfugiat blanditiis voluptate porro vel nihil molestiae ut reiciendis  nqui aperiam non debitis possimus qui neque nisi nada"
  },
  {
    "userId": 1,
    "id": 3,
    "title": "ea molestias quasi Exercitationem repellat qui ipsa sit aut",
    "cuerpo": "et iusto sed quo iure  nvoluptatem ocasionalecati omnis eligendi aut ad  nvoluptatem doloribus vel accusantium quis pariatur  nmolestiae porro eius odio et labore et velit aut"
  } 

Para manejar esta información, necesitaremos una clase capaz de crear objetos a partir de datos deserializados. Para hacer esto, cree una nueva clase en su proyecto y asígnele el nombre "PlaceholderPost". Esto requerirá variables que coincidan con los datos que obtenemos de la página / posts ("cuerpo", "ID", etc.). Obtendremos esta información de la API web, por lo que necesitamos un getter para cada uno de ellos.

La clase final debería verse así:

  public class PlaceholderPost {

    int ID de usuario privado;
    int identificación privada;
    título de cadena privada;
    cuerpo de cadena privada;

    public int getUserId () {
        return ID de usuario;
    }

    public int getId () {
        id de retorno;
    }

    public String getTitle () {
        título de devolución;
    }

    public String getBody () {
        cuerpo de regreso;
    }

}

¡Podrían ser fácilmente usuarios de Twitter, publicaciones de Facebook o información meteorológica!

Archivo de interfaz

A continuación, necesitamos un nuevo archivo de interfaz. Lo crea de la misma manera que crea una clase: haciendo clic en el nombre del paquete en la ventana del proyecto y eligiendo "Nuevo> Clase", pero aquí está seleccionando "Interfaz" debajo de donde ingresa el nombre. Un archivo de interfaz contiene métodos que posteriormente son implementados por una clase. Llamé a mi "PlaceholderAPI".

Esta interfaz solo necesita un método para recuperar todos los datos de "/ Post". Si vuelve a mirar ese JSON, notará que los corchetes están entre corchetes. Esto significa que tenemos una matriz de objetos, por lo que queremos crear una lista para ellos. Los objetos son instancias de nuestro "PlaceholderPost" que acabamos de crear, ¡así que eso es lo que estamos poniendo aquí!

Para aquellos que son muy nuevos en la programación, recuerden que cualquier línea roja probablemente significa que no ha importado una clase. Simplemente haga clic en la declaración resaltada y presione Alt + Enter para hacerlo automáticamente.

(No puedo imaginar a nadie usándolo como lección de programación inicial, ¡pero nunca se sabe!)

Esto se ve así:

  import java.util.List;
import retrofit2.Call;
import retrofit2.http.GET;

interfaz pública PlaceholderAPI {

    @GET ("publicar")
    Llame a  getPosts ();

} 

Viendo el contenido

Ahora regrese a su actividad principal. Podríamos construir un diseño elaborado para mostrar todos estos datos, pero para mantener las cosas simples y agradables, mantendré el diseño como está.

Para usar Retrofit, necesitaremos crear un nuevo objeto Retrofit. Hacemos esto con las siguientes líneas de código:

  Retrofit retrofit = new Retrofit.Builder ()
            .baseUrl ("https://jsonplaceholder.typicode.com/")
            .construir (); 

Como puede ver, estamos pasando el resto de la URL aquí. Entonces queremos usar nuestra interfaz:

  Call  call = placeholderAPI.getPosts ();

¡Ahora solo tenemos que llamar al método! Dado que las cosas han sido demasiado fáciles hasta ahora, Android se complica un poco al evitar que lo hagas en el hilo principal. La razón, por supuesto, es que si el proceso toma demasiado tiempo, ¡eventualmente congelará la aplicación! Esto es cierto cuando se usa cualquier API web. Tiene sentido, pero no es particularmente conveniente cuando solo queremos crear un tutorial. Afortunadamente, no necesitamos crear un segundo hilo nosotros mismos, ya que Retrofit hace todo esto por nosotros.

Ahora recibiremos una devolución de llamada onResponse y onFailure. onFailure es, por supuesto, donde necesitamos manejar cualquier error.

onResponse no significa que todo salió bien, sin embargo. Simplemente significa que ha habido una respuesta; que el sitio web existe. Si tuviéramos que recibir un mensaje 404, esto aún se consideraría una "respuesta". Por lo tanto, debemos verificar nuevamente si el proceso se desarrolló sin problemas con isSuccessful () que verifica que el código HTTP no sea un error.

Para mantener las cosas realmente simples, solo voy a ver una parte de los datos de uno de los objetos que recibimos. Para lograr esto, he cambiado el nombre de textView en el archivo de diseño para darle la identificación "texto". Puedes experimentar por ti mismo.

El código completo se ve así:

  call.enqueue (new Callback  () {
            @Paso superior
            public void onResponse (Llamada  llamada, Respuesta  respuesta) {

                if (response.isSuccessful ()) {
                    Lista de publicaciones = respuesta.cuerpo ();
                    Log.d ("Éxito", posts.get (3) .getBody (). ToString ());
                    TextView textView = findViewById (R.id.text);
                    textView.setText (posts.get (3) .getBody (). toString ());
                } otro {
                    Log.d ("Yo", "¡Boo!");
                    regreso;
                }
            }

            @Paso superior
            anulación pública en caso de falla (llamada  llamada, Throwable t) {
                Log.d ("Yo", "¡Error!");
            }

        });


        Log.d ("Yo", "¡Hola!");
    }
}

Conclusión

A estas alturas, debería tener una buena idea de cómo funciona una API web y por qué quiere una. También habría creado su primera aplicación que utiliza una API web para hacer algo potencialmente útil.

Por supuesto, hay muchas otras API web y cada una funciona a su manera. Algunos requerirán SDK adicionales para usar o diferentes bibliotecas. Asimismo, existen muchas otras acciones además de la solicitud "GET" que hemos demostrado aquí. Por ejemplo, puede usar "POST" para enviar datos al servidor, lo cual es útil si desea que sus usuarios puedan publicar en las redes sociales desde sus aplicaciones.

Las posibilidades son infinitas cuando combinas el poder y la flexibilidad de Android con los enormes recursos disponibles en línea.

Compruebe también

Kakaonavi aumentó la adopción de dispositivos plegables en un 24,5 % después de optimizar su aplicación para pantallas grandes

Publicado por el equipo de Android Kakaonavi se enorgullece de proporcionar rutas rápidas y precisas …

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *