Sobre hacer consulta a un API

Posted by ezequielmontoya on 13-Mar-2020 16:48

Hola todos, por primera vez me veo en la necesidad de hacer consultas a un API.

Es un tercero que me da un nombre de usuario, un token y un enlace al que yo debo añadir el número de contribuyente (RUC).

Me devolverá un JSON con información del RUC (Nombre, dirección, etc)

La pregunta es si puedo hacer eso en OpenEdge 11.6.3. No tenemos AppServer ni PAS, ni vamos a comprarlo.

¿Sabe alguien si es posible?

All Replies

Posted by terlas on 13-Mar-2020 17:25

Es una peticíon a un webservice tipo GET, PUT  o POST?

Posted by terlas on 13-Mar-2020 17:25

Es una peticíon a un webservice tipo GET, PUT  o POST?

Posted by OctavioOlguin on 13-Mar-2020 18:59

Claro que si... el servicio es un Rest, supongo..?

knowledgebase.progress.com/.../How-to-consume-a-REST-Webservice-from-an-OpenEdge-Client

o prueba a consultar en el community por:

"consuming rest"

Saludos!!!

Posted by ezequielmontoya on 13-Mar-2020 19:33

Muchas gracias.

La única instrucción es:
Consulta RUC: apiperu.dev/.../12345678901
Método GET

Realmente no sé si sea REST

Posted by Francisco Morales López on 18-Mar-2020 05:20

Hola Buena Noche, la llamada al WS con un mensaje JSON es posible desde código Progress cliente, no requieres el server, este lo utilizarías si tu quisiera publicar el servicio, pero en este caso quieres consumirlo.

Se utilizan librerias tipo .NET y JavaScript que utilizas para generar el mensaje y la conexión.

Aquí la documentación sobre los metodos JSON

documentation.progress.com/.../index.html

documentation.progress.com/.../index.html

Es posible requieras actualizar a 11.7, que es la ultima que tendrá soporte y recibirá actualizaciones.

También puede pedir des de alta la ruta de las librerías en el propatch de Progress.

Si has utilizado mensajes tipo XML veras que la lógica es similar.

Posted by ezequielmontoya on 20-Mar-2020 18:57

Hola todos, desde mi cuarentena a la de varios de ustedes.

Recién me siento en la computadora, aplicaré sus aportes en pruebas desde casa. Usaré el 11.6.3 de la oficina. No puede ser 11.7 porque la empresa no ha pagado el mantenimiento ni va a gastar en actualizar esto, y menos ahora que vamos a tener tremendos problemas económicos luego de dos o tres semanas en blanco, de un año que no iba bien, viniendo de otro que tampoco.

Pero bueno, para adelante es la cosa, muchas gracias y hasta pronto.

Posted by Francisco Morales López on 21-Mar-2020 04:09

En caso de que el tema sea .NET y JavaScript entiendo que es posible importar las librerías manualmente.

Posted by ezequielmontoya on 24-Mar-2020 05:07

[mention:45b90340ccbc408da6904946f587d486:e9ed411860ed4f2ba0265705b8793d05], he empezado por este ejemplo de la KB que pasaste. He cambiado el URL, en el que "20100525641" es el número de RUC que quiero consultar.

Descargué el certificado de seguridad del sitio y he añadido autenticación básica.

USING OpenEdge.Net.HTTP.IHttpRequest.

USING OpenEdge.Net.HTTP.IHttpResponse.

USING OpenEdge.Net.HTTP.ClientBuilder.

USING OpenEdge.Net.HTTP.RequestBuilder.

USING OpenEdge.Net.HTTP.Credentials.

 

DEFINE VARIABLE oRequest  AS IHttpRequest NO-UNDO.

DEFINE VARIABLE oResponse AS IHttpResponse NO-UNDO.

DEFINE VARIABLE oCredentials AS Credentials NO-UNDO.

 

oCredentials = new Credentials('application', 'ezequielmontoya@gmail.com', 'MiPassword').

oRequest = RequestBuilder:Get('https://apiperu.dev/api/ruc/20100525641')

               :AcceptJson()

               :UsingBasicAuthentication(oCredentials)

               :Request.

oResponse = ClientBuilder:Build():Client:Execute(oRequest).

MESSAGE

   "StatusCode:" oResponse:StatusCode SKIP  

   "StatusReason" oResponse:StatusReason SKIP

   VIEW-AS ALERT-BOX.

El resultado en el message es

StatusCode: 401

StatusReason Unauthorized

Al loggearme manualmente al sitio web con usuario y contraseña, me da un token (en este caso es "ad1113f0fed3e13963a42e9e52a18b85042ef6f65c727bb35faa2bbc43f566cb")

Supongo que necesito pasar el token en alguna parte del request, ¿me puedes ayudar en este paso siguiente?

Posted by OctavioOlguin on 24-Mar-2020 14:09

Que tal.

Yo no he accesado servicios fuera de un servicio de sellado de documentos fiscales, pero el servicio es atómico, en una sola solicitud se manda el dato, y el usuario y clave. y regresa el resutlado.

Dale una checada al tema CLIENT PRINCIPAL, es el tema que comentas...

Saludos..

Posted by terlas on 24-Mar-2020 20:02

En los mensajes posteriores tienes que añadir el siguiente codigo:

oRequest:Headers:Add("Authorization", "Bearer  TOKEN_QUE_TE_HA_DEVUELTO_EL_WEBSERVICES").

En tu caso seria:

oRequest:Headers:Add("Authorization", "Bearer ad1113f0fed3e13963a42e9e52a18b85042ef6f65c727bb35faa2bbc43f566cb").

This thread is closed