Accesar API REST FULL JSON

438 views
Skip to first unread message

Angel Dario Rodriguez

unread,
Aug 2, 2023, 9:15:23 PM8/2/23
to publice...@googlegroups.com
Buenas mis estimados foxeros. 
Necesito accesar una APLI REST, ubicada en un servidor en la nube y que esta en JSON, Para las pruebas me suministraron el Token.
Investigando veo que VFP no tiene comandos nativos para accesar esa API. Tiene alguno de ustedes una sugerencia o un codigo que me permita accesar esa API y descargar la data?

Gracias anticipadas.
Angel Dario Rodriguez.

Sergio Rojas

unread,
Aug 3, 2023, 6:53:03 AM8/3/23
to publice...@googlegroups.com

Hola. Entre las opciones disponibles, yo elegí qdfoxJSON.

Me resultó sencillo y luego de algunos ajustes ya estaba en funcionamiento.

Adjunto enlace a la librería.

https://1drv.ms/u/s!Akf5sI6XKqlbgqUiq_bPdPUIcovqIw?e=l2e1q3

Saludos

Sergio Rojas

--
Blog de la Comunidad Visual FoxPro en Español: http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/publicesvfoxpro/CAMRG1oZd8k1mwmcL1zbUoS%3Dwkzxq1Y%2BLg1xKQLQsxGWsMfxQWg%40mail.gmail.com.

Victor Espina

unread,
Aug 3, 2023, 8:58:38 AM8/3/23
to Comunidad de Visual Foxpro en Español
qdfoxJSON es una libreria ya antigua y fuera de soporte.  Fue sustituida por esta, que tambien incluye metodos nativos para consumir APIs REST:
vespina/json: 100% VFP JSON parser & utilities (github.com)

Saludos

Victor Espina

Jahaira Beatriz Rivera Silva

unread,
Aug 3, 2023, 10:35:27 AM8/3/23
to publice...@googlegroups.com
hola necesito que me ayden con una base de datos de un laboratorio clinico..gracias

Libre de virus.www.avg.com

Juan Gonzalez

unread,
Aug 3, 2023, 11:19:05 AM8/3/23
to publice...@googlegroups.com
yo pude consumir un api rest desde vfp... 


 LCURL = 'aqui va la direccion del api a consumir'
 LCMETHOD = 'POST'
 LCDATA1 = 'llave que necesitas'
 LCDATA2 = '3'

 LCPARAM1 = 'llave'
 LCPARAM2 = 'id_departamento'

 CSEP = ','

 = USE_RESTFUL(LCURL,LCMETHOD,LCPARAM1,LCDATA1,LCPARAM2,LCDATA2)

PROCEDURE USE_RESTFUL
 LPARAMETER CURL , CMETHOD , CPARAM1 , CDATA1 , CPARAM2 , CDATA2
 LOCAL LOK , OHTTP , CDATA , CRESPONSE
 CDATA = '{'
 CDATA =  ;
      CDATA + '"' + CPARAM1 + '"' + ': ' + '"' + TRANSFORM(CDATA1) + '"' + CSEP
      
 CDATA = CDATA + '"' + CPARAM2 + '"' + ': ' + '"' + TRANSFORM(CDATA2) + '"'
 CDATA = CDATA + '}'
 OHTTP = CREATEOBJECT('Msxml2.ServerXMLHTTP.6.0')
  OHTTP.OPEN(CMETHOD,CURL,.F.)
  OHTTP.SETREQUESTHEADER('Content-Type','application/x-www-form-urlencoded')
  OHTTP.SEND(CDATA)
 LOK = .T.
 IF LOK
    IF OHTTP.STATUS = 200
       CRESPONSE = OHTTP.RESPONSETEXT
    ELSE
       CRESPONSE =  ;
            '{"Error": "No se logró la conexión con el Web Service.' + OHTTP.RESPONSETEXT +  ;
      '"}'
       LOK = .F.
    ENDIF
 ENDIF
MESSAGEBOX('RESULTADO'+ CRESPONSE)

es para consultar un departamento ingresando la llave y el id del departamento

espero les sirva

Mik

unread,
Aug 3, 2023, 3:30:57 PM8/3/23
to Comunidad de Visual Foxpro en Español
Aqui te dejo un ejemplo donde primero consigo el token enviando credenciales y luego usando el token para retornar la data. Espero le sirva.

LOCAL cUrl as String, cUrlAuth as String, cResponse as String, oToken as Object, ;
oSuccess as Object, loExc as Exception, oHTTP as Object, cToken as String, cResponse as String
TRY
lSuccess = null
oHTTP = CREATEOBJECT('WinHttp.WinHttpRequest.5.1')

IF VARTYPE(json) = "U"
DO Json
ENDIF

*/* Obtener Token
cUrlAuth = [https://dominio.xxxx.gob.pe/control1/ws/auth]
TEXT TO sJSONRequest NOSHOW
{
"username": "xxxxxxxxxxxx",
"password": "xxxxxxxxxxxx"
}
ENDTEXT
oHTTP.open("POST", cUrlAuth, .F.)
oHTTP.setRequestHeader("Content-Type", "application/json; charset=utf-8")
oHTTP.send(sJSONRequest )
cResponse = oHTTP.responseText  
oToken = JSON.Parse(cResponse)
cToken = oToken.Token

*/* Obtener Datos desde EndPoint
cUrl = [https://dominio.xxxxx.gob.pe/control1/ws/api/plantacion/1/]
TEXT TO cParam NOSHOW TEXTMERGE
Bearer <<cToken>>
ENDTEXT
oHTTP.open("GET", cUrl, .F.)
oHTTP.setRequestHeader("X-Authorization", cParam)
oHTTP.setRequestHeader("Accept", "application/json")
oHTTP.send()
cResponse = oHTTP.responseText  
IF oHttp.Status # 200 && HTTP CODE 200 :OK
lSuccess = null
EXIT
ENDIF
oSuccess = json.Parse(
cResponse )

_Vfp.StatusBar = "Request is successfull ..."

CATCH TO loExc

_Vfp.StatusBar = loExc.Message
oSuccess = null

ENDTRY
RETURN oSuccess 



Saludos

Miguel Herbias
Lima-PERU

Victor Espina

unread,
Aug 3, 2023, 4:05:18 PM8/3/23
to Comunidad de Visual Foxpro en Español
Mismo codigo pero usando mi libreria JSON:

LOCAL cUrl, cUrlAuth, cJSONPayload, oResp, cHeaders, cToken,oSuccess
cUrl = [https://dominio.xxxxx.gob.pe/control1/ws/api/plantacion/1/]
cUrlAuth = [https://dominio.xxxx.gob.pe/control1/ws/auth]
cJSONPayload = ""
TRY
DO json

* OBTENER TOKEN
TEXT TO cJSONPayload NOSHOW

{
"username": "xxxxxxxxxxxx",
"password": "xxxxxxxxxxxx"
}
ENDTEXT

oResp = JSON.httpPOST(cUrlAuth, cJSONPayload)
IF oResp.HasError
   ?oResp.errorMsg
   RETURN
ENDIF
cToken = oResp.JSON.Token


* OBTENER DATOS DESDE ENDPOINT
TEXT TO cHeaders NOSHOW TEXTMERGE
X-Authorization: Bearer <<cToken>>
Accept: application/json
ENDTEXT
oResp = JSON.httpGET(cUrl, cHeaders)
IF oResp.HasError
   ?oResp.errorMsg
   RETURN
ENDIF

oSuccess = oResp.JSON


_Vfp.StatusBar = "Request is successfull ..."

CATCH TO loExc

_Vfp.StatusBar = loExc.Message
oSuccess = null

ENDTRY
RETURN oSuccess
Message has been deleted

Victor Espina

unread,
Aug 3, 2023, 4:10:59 PM8/3/23
to Comunidad de Visual Foxpro en Español
Mismo codigo pero usando mi libreria JSON:

DO json


LCURL = 'aqui va la direccion del api a consumir'
LCDATA = ""
TEXT TO LCDATA NOSHOW
llave=llave que necesitas&id_departamento=3
ENDTEXT

LCHEADERS='Content-Type','application/x-www-form-urlencoded'
oResp = JSON.httpPOST(LCURL, LCDATA, LCHEADERS)
IF oResp.hasError
   MESSAGEBOX(oResp.errorMsg)
   RETURN
ENDIF

MESSAGEBOX(oResp.raw)

Mik

unread,
Aug 3, 2023, 4:17:44 PM8/3/23
to Comunidad de Visual Foxpro en Español
Genial Victor!  Voy a actualizarme porque me quedé en la version 1.16 de tu libreria.

Saludos!

Victor Espina

unread,
Aug 3, 2023, 4:34:37 PM8/3/23
to Comunidad de Visual Foxpro en Español
Te gustara. Ya vamos por la 1.27 con varias mejoras y correcciones. 

Saludos

Victor Espina

Rodribezul

unread,
Aug 3, 2023, 4:41:43 PM8/3/23
to Comunidad de Visual Foxpro en Español
No lo he probado, pero creo que, con estas librerías de Irwin Rodríguez  , también se puede 

Angel Dario Rodriguez

unread,
Aug 3, 2023, 7:46:07 PM8/3/23
to publice...@googlegroups.com
Gracias  a todos por su inestimable atencion.
Mi urgencia es poder accesar  la siguiente URL "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
el "toquen" es 'cEozRHNuSk9FbnFRRTVwa2VRenhJSmNKb040RjFVNjdpYUtOR09OWlhIU2xzN0pUTGhhYk84Wkw3Wkg4cGpWZg==.SW13Qnc1UTYzVnZJTjJCb0pxWnlTZWVNK2dEYXkveDBWeEZFc3AxQ0ovd0xxQVV5QXNuVmJST0pLek9SQVdvdDI5MUN0NHRVSW1hS2hoT3YNClRiNGplY1UvakVWR1pBRzR1VE9yWnpPM243QXVHdlhwQXFOTmhVZWcxRzdob0hyVDYwdlVCRDEwVjB3ZzQvaTVpWjBpRkE9PQ==.8sG3MPFYhHyYhjwf/vWJqQ=='

he tratado pero me da error la API.
Les adjunto el manual de la API para ver si me pueden indicar que no estoy haciendo bien.
Gracias anticipadas.


--
Blog de la Comunidad Visual FoxPro en Español: http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.
ZEN-DOC-API002 MANUAL API ZENCILLO INTEGRACION VER 8espX.pdf

Angel Dario Rodriguez

unread,
Aug 3, 2023, 7:46:56 PM8/3/23
to publice...@googlegroups.com
Coleccion Postman Zencillo Integracion V3.unknown

Mario Escudero

unread,
Sep 16, 2023, 3:11:58 PM9/16/23
to Comunidad de Visual Foxpro en Español
Hola.
Lo solucionaste?

Angel Dario Rodriguez

unread,
Sep 17, 2023, 9:15:58 AM9/17/23
to publice...@googlegroups.com
Buenas, ayer sabado pudimos ya terminar y probar la DLL para accesar la apis de Zencillo.

HernanCano

unread,
Sep 17, 2023, 3:02:10 PM9/17/23
to Comunidad de Visual Foxpro en Español
En la pág 9 se muestra cómo iniciar : sólo hay que seguir las instrucciones.

Parece que es un proceso manual (obtener token), pero ahí está.

Recordemos lo q siempre he dicho: todos estos servicios web no son "exactamente iguales", no funcionan "exactamente iguales": cada uno presenta particularidades que sólo están en la documentación de ese servicio web; y simplemente hay que seguir las instrucciones.

Voy a repetir esta misma recomendación pero en vez de "servicio web" digo "API", por si alguno no entiende los términos adecuadamente.

Recordemos lo q siempre he dicho: todos estas APIs no son "exactamente iguales", no funcionan "exactamente iguales": cada uno presenta particularidades que sólo están en la documentación de esa API; y simplemente hay que seguir las instrucciones.

Hay similitudes, pero sólo es prestar atención a un video donde se comenten las características generales, y luego proceder con la doc.

Las palabras "servicio web" y "API" son son estrictamente lo mismo, pero en nuestros contextos así se ha venido manejando.


borrable1.png


Reply all
Reply to author
Forward
0 new messages