Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / Java / Cliente Retrofit – Web Service

Cliente Retrofit – Web Service

Autor jc mouse lunes, junio 29, 2020

Continuando el post de «Introducción a Retrofit» donde realizamos una breve preparación a lo que es el uso de la librería Retrofit, en esta oportunidad, ya conociendo el funcionamiento básico del Cliente REST de Retrofit, implementaremos los métodos de petición GET, POST, UPDATE, DELETE para consumir un API que esta en Internet.

¿Que necesitamos?

  • Librería Retrofit
  • Librería Gson
  • Rest Api de prueba (Guía)
  • IDE Netbeans
  • Conocimientos básicos sobre REST
  • Java 8+

En el post anterior se puedes ver a detalle todos los *.jar necesarios para ejecutar el proyecto, así como otras formas de uso de Retrofit.

Comencemos.

Paso 1. Estructura del proyecto java

Creamos un proyecto Java Aplication con el nombre de Cliente Retrofit y agregamos las siguientes clases:

cliente java web service

Paso 2. MiAPIService

Establecemos los endpoints en una interface mediante anotaciones especiales de modificación, detallamos información sobre los los parámetros y el método de cada solicitud.

package org.example;

import java.util.List;
import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.DELETE;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.PUT;
import retrofit2.http.Path;
/**
 * @see https://www.jc-mouse.net/
 * @author mouse
 */
public interface MiAPIService {
   
    @GET("posts")
    Call<List<Articulo>> obtenerTodosLosArticulos();    
    
    @GET("posts/{id}")
    Call<Articulo> obtenerArticulo(@Path("id") int id);
    
    @POST("posts")
    Call<Articulo> crearArticulo(@Body Articulo articulo);
    
    @PUT("posts/{id}")
    Call<Articulo> actualizarArticulo(@Path("id") int id, @Body Articulo articulo);
    
    @DELETE("posts/{id}")
    Call<ResponseBody> borrarArticulo(@Path("id") int id);
    
}

Paso 3. Articulo

Establecemos la clase Articulo (Post) para el manejo del JSON del API

package org.example;

/**
 * @see https://www.jc-mouse.net/
 * @author mouse
 */
public class Articulo {

    private int userId;
    private int id;
    private String title;
    private String body;

    public int getUserId() {
        return userId;
    }

    public void setUserId(int userId) {
        this.userId = userId;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getBody() {
        return body;
    }

    public void setBody(String body) {
        this.body = body;
    }

    @Override
    public String toString() {
        return "   Articulo{" + "\n    userId=" + userId + ",\n    id=" + id +
                ",\n    title=" + title + ",\n    body=" + body + "\n }";
    }

}

Paso 4. El Cliente Retrofit

Para manejar cada una de las peticiones al REST, definimos una clase cliente, esta clase realizará las peticiones de forma sincrónica, es decir, se envía una solicitud y se espera una respuesta, hasta que la respuesta no llegue, la aplicación permanece bloqueda. Este tipo de protocolo ya no es muy utilizado pero vale la pena conocerlo.

package org.example;

import java.util.List;
import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
/**
 * Llamadas Sincronicas
 * @see https://www.jc-mouse.net/
 * @author mouse
 */
public class ClienteRetrofit {

    private static final String API_URI = "https://jsonplaceholder.typicode.com/";
    private static final Retrofit RETROFIT = new Retrofit.Builder().baseUrl(API_URI)
                .addConverterFactory(GsonConverterFactory.create()).build();
    private static final MiAPIService SERVICE = RETROFIT.create(MiAPIService.class);

    public ClienteRetrofit() {}

    public List<Articulo> obtenerTodosLosArticulos() throws Exception {
        Call<List<Articulo>> articulos = SERVICE.obtenerTodosLosArticulos();
        return articulos.execute().body();
    }

    public Articulo obtenerArticulo(int id) throws Exception {
        Call<Articulo> articulo = SERVICE.obtenerArticulo(id);
        return articulo.execute().body();
    }

    public Articulo crearArticulo(Articulo art) throws Exception {
        Call<Articulo> articulo = SERVICE.crearArticulo(art);
        return articulo.execute().body();
    }

    public Articulo actualizarArticulo(int id, Articulo art) throws Exception {
        Call<Articulo> articulo = SERVICE.actualizarArticulo(id, art);
        return articulo.execute().body();
    }
    
    public ResponseBody borrarArticulo(int id) throws Exception {
        Call<ResponseBody> articulo = SERVICE.borrarArticulo(id);
        return articulo.execute().body();
    }
    
}

paso 5. Main

Finalmente en la clase Main, implementamos el código para realizar cada una de las peticiones imprimiendo el resultado en pantalla.

package org.example;

import java.util.List;
import okhttp3.ResponseBody;
/**
 * @see http://www.jc-mouse.net/
 * @author mouse
 */
public class Main {

    public static void main(String[] args) throws Exception {
        System.out.println("Inicio");
                
        ClienteRetrofit clienteRetrofit = new ClienteRetrofit();               
        
        List<Articulo> arts = clienteRetrofit.obtenerTodosLosArticulos();
        System.out.println("> Total articulos: " + arts.size() + "\n");
        
        System.out.println("> OBTENER ARTICULO CON ID:10");
        Articulo art = clienteRetrofit.obtenerArticulo(10);
        System.out.println(art);
        
        System.out.println("> CREAR NUEVO ARTICULO");
        Articulo new_art = new Articulo();
        new_art.setUserId(28);
        new_art.setId(101);
        new_art.setTitle("Titulo Nuevo Articulo");
        new_art.setBody("Lorem ipsum");
        Articulo art_new = clienteRetrofit.crearArticulo(new_art);
        System.out.println(art_new);
        
        System.out.println("> ACTUALIZAR ARTICULO");
        art.setTitle("Titulo actualizado");
        art.setBody("");
        Articulo art_up = clienteRetrofit.actualizarArticulo(10, art);
        System.out.println(art_up);
        
        System.out.println("> ELIMINANDO ARTICULO CON ID: 21");        
        ResponseBody responseBody = clienteRetrofit.borrarArticulo(24);
        System.out.println(responseBody.string());
        
        System.out.println("\nFin");
    }
    
}

Y ejecutando el proyecto tenemos:

protocolo http sincronico en java

Eso es todo, en un próximo post, implementaremos este cliente en una aplicación android con llamadas asincronicas. Hasta pronto.

enjoy!

Tags

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!
Autor: JC Mouse

Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.

Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye

Enjoy! :)

También Te Podría Interesar

Generar esquema XSD a partir de clases java

Generar esquema XSD a partir de clases java

En un post anterior vimos como usar la herramienta XJC del JDK para generar clases java desde esquemas XSD (XML Schema D...

Capturar foto desde una webcam con Java Media Framework

Capturar foto desde una webcam con Java Media Framework

Como se vio en un post anterior (Capturar video de una webcam con JMF) la captura de un video desde una webcam utilizand...

Graficos estadisticos con javafx y swing

Graficos estadisticos con javafx y swing

En este post aprenderemos a usar los gráficos 2d que viene con JavaFX en nuestras aplicaciones java swing. Esto puede se...

Creación de GUI con Matlab GUIDE

Creación de GUI con Matlab GUIDE

En este videotutorial se vera la creación de Interfaces Gráficas de Usuario (GUI) utilizando MatLab GUIDE herramienta vi...

Convertir imagenes JPEG a video MOV

Convertir imagenes JPEG a video MOV

Googleando me encontré con una interesante clase java «JpegImagesToMovie» que convierte imágenes JPEG a vídeo MOV de Qui...

Impresión de Interfaz Gráfica de Usuario

Impresión de Interfaz Gráfica de Usuario

En este post veremos como imprimir secciones de un formulario en java implementando la Interface Printable. La clase que...

Comparte lo que sabes

Categorias

Últimas entradas

Por lo general se usan transacciones a nivel base de datos y posteriormente se llaman estos a través de procedimientos a...

En este post, aprenderemos como conectar Visual Basic 6 con SQL Server, abrir una tabla, leer su contenido y mostrar est...

Lo que veremos en este post es la configuración del driver para PHP de SQL Server que ha creado Microsoft el cual permit...

Google Bard la inteligencia artificial de Google se actualiza con una mejora que entra a competir con el resto de IAs y...

Herramientas

Generador de Enlaces a Whatsapp