Oracle Middleware and Developer
Specialist
BY EMMANUEL GUZMÁN
JAVA
Cómo consumir un API
Restful usando el método
POST en Java
26 OCTUBRE 2020 Emmanuel Guzmán
Para este laboratorio consumiremos un API Restful que tenga
comunicación de tipo json; ya en una anterior publicación vimos como
crear un API Rest, en este caso vamos a crear un cliente que permita
consumir un API Restful utilizando el método POST.
Para este proyecto crearemos un proyecto de tipo Java Maven, no es
necesario que sea de tipo web application y estoy usando java 8.
Consumiremos un API interna:
http://172.28.45.81/PS.CGP.PublicInterface/api/PIN/
Esta API posee un método llamado GetAccountInfo, en el cual
consultaremos los datos de un usuario de prueba.
Dentro del paquete del proyecto crearemos 2 clases:
BaseReq
Prueba
Estas clases se utilizarán para toda la demo del cliente del API.
Dentro de nuestro pom.xml debemos agregar las siguientes dependencias
ya que las necesitaremos para consultar el API Restful:
<dependencies>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.6</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>javax.ws.rs-api</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-client</artifactId>
<version>3.1.0.Final</version>
</dependency>
<dependency>
<groupId>javax.json</groupId>
<artifactId>javax.json-api</artifactId>
<version>1.1.4</version>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20180130</version>
<type>jar</type>
</dependency>
</dependencies>
Luego de haber colocado todas nuestras dependencias realizamos un
build de la aplicación y ahora sí vamos a programarlo.
Dentro de la clase BaseReq.java únicamente crearemos las siguientes
variables, junto con sus setters y sus getters:
Luego de ello, nos iremos a la clase Prueba.java, dentro de la clase
crearemos el método main e importaremos las siguientes referencias:
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.net.URL;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import javax.json.JsonObject;
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.Entity;
import javax.ws.rs.client.Invocation;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.Form;
import javax.ws.rs.core.Response;
Ahora, dentro el método main, usaremos el siguiente código para realizar
la consulta al API, lo iré explicando sección por sección, al final hay una
imagen resumen del código:
public static void main(String[] args) {
//Esta variable res la usaremos únicamente para dar un respuesta
final
String res = "";
String URL =
"http://172.28.45.81/PS.CGP.PublicInterface/api/PIN/";
try {
//Creamos el cliente de conexión al API Restful
Client client = ClientBuilder.newClient();
//Creamos el target lo cuál es nuestra URL junto con el nombre
del método a llamar
WebTarget target = client.target(URL + "GetAccountInfo");
//Creamos nuestra solicitud que realizará el request
Invocation.Builder solicitud = target.request();
//Creamos y llenamos nuestro objeto BaseReq con los datos que
solicita el API
BaseReq req = new BaseReq();
req.setHostId("Z+W8pqkq/2DbF58Eo2dUcZMUTcGU6t4eouRhllHA");
req.setOperationId("31e32-8f53ed89");
req.setClientIPAddress("127.0.0.1");
req.setCultureCode("ES-CR");
req.setAccountNumber("CR00081411111111111111");
//Convertimos el objeto req a un json
Gson gson = new Gson();
String jsonString = gson.toJson(req);
System.out.println(jsonString);
//Enviamos nuestro json vía post al API Restful
Response post = solicitud.post(Entity.json(jsonString));
//Recibimos la respuesta y la leemos en una clase de tipo String,
en caso de que el json sea tipo json y no string, debemos usar la
clase de tipo JsonObject.class en lugar de String.class
String responseJson = post.readEntity(String.class);
res = responseJson;
//Imprimimos el status de la solicitud
System.out.println("Estatus: " + post.getStatus());
switch (post.getStatus()) {
case 200:
res = responseJson;
break;
default:
res = "Error";
break;
} catch (Exception e) {
//En caso de un error en la solicitud, llenaremos res con la
exceptión para verificar que sucedió
res = e.toString();
//Imprimimos la respuesta del API Restful
System.out.println(res);
De esta manera al ejecutar la clase, recibiremos una respuesta como la
siguiente, en la cual veremos el json enviado, el estatus recibido y el json
recibido:
Los estatus son súper importantes saberlos manejar, ya que existen
varios, algunos de ellos son:
503 – Error interno del servidor
404 – página no encontrada
200 – solicitud satisfactoria
Entre otros, estos estatus son los que recibimos con post.getStatus(), de
esta manera en caso de que el API esta caído o de error, podemos manejar
la respuesta.
En caso de requerir enviar algún header, por ejemplo un accessToken,
podemos usar el siguiente código debajo de la declaración de la solicitud
del request:
solicitud.header("Authorization", accessToken);
Este proceso se puede comprimir mucho más para hacerlo aún más
eficiente, de tal forma que lo podemos convertir a una función que se vea
como la siguiente:
Así podemos crear n cantidad de métodos para interactuar con el API.
Cada API tiene su propia documentación de como funciona, no todas son
iguales, por lo que siempre es bueno leerla, algunas API públicas no
requieren un token de acceso, otras sí, algunas requieren un método de
autenticación y uno de deslogueo, por lo que mi recomendación esque
podemos usar esta base para interactuar con un API usando el método
POST, así no exponemos nuestros datos usando el método GET, sin
embargo puede diferir un poco, dependiendo del API Restful a consumir.
POST VIEWS: 10.596
Publicado en Java Etiquetado como API Restful, java, POST comment 1 comentario
Cómo abrir puertos en el firewall de Cómo obtener los valores de las
Oracle Linux 7 propiedades de un json en Java
Una respuesta a «Cómo consumir un API Restful usando el
método POST en Java»
fico dice:
15 abril 2021 a las 9:36 PM
Gracias Totales!
RESPONDER
Deja una respuesta
Tu dirección de correo electrónico no será publicada. Los campos obligatorios están
marcados con *
COMENTARIO
NOMBRE *
CORREO ELECTRÓNICO *
WEB
GUARDA MI NOMBRE, CORREO ELECTRÓNICO Y WEB EN ESTE NAVEGADOR PARA LA
PRÓXIMA VEZ QUE COMENTE.
PUBLICAR EL COMENTARIO
CORREO DE CONTACTO:
[email protected]
BUSCA UNA DOCUMENTACIÓN:
Buscar...
SÍGUEME:
Fac Twi
ebook tter
Te gusta mi blog? Suscríbete
Digita tú correo
SUSCRIBIRSE
© 2022 Oracle Middleware and Developer Specialist
Funciona con WordPress / Tema de Design Lab
Wordpress Social Share Plugin powered by Ultimatelysocial