Está en la página 1de 12

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:

oracle.max.consultor@gmail.com

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

También podría gustarte