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?
Es una peticíon a un webservice tipo GET, PUT o POST?
Es una peticíon a un webservice tipo GET, PUT o POST?
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!!!
Muchas gracias.
La única instrucción es:
Consulta RUC: apiperu.dev/.../12345678901
Método GET
Realmente no sé si sea REST
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.
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.
En caso de que el tema sea .NET y JavaScript entiendo que es posible importar las librerías manualmente.
[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?
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..
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").