Lectura de API desde FW

Post Reply
User avatar
jnavas
Posts: 399
Joined: Wed Nov 16, 2005 12:03 pm
Location: Caracas - Venezuela
Contact:

Lectura de API desde FW

Post by jnavas »

Saludos a todos
Necesito leer mediante API los valores indicados en la siguiente pagina, es una nueva regulación venezolana para presentar estados financieros según el valor del Petro.
https://www.petro.gob.ve/desarrolladores.html

Agradecido por sus aportes.
Compuin
Posts: 1017
Joined: Tue Dec 28, 2010 1:29 pm

Re: Lectura de API desde FW

Post by Compuin »

Buenos dias Sr Juan

Aca hay un ejemplo del uso de las API

https://forums.fivetechsupport.com/view ... t=leer+api
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Lectura de API desde FW

Post by cnavarro »

Aqui tienes un ejemplo
http://forums.fivetechsupport.com/viewt ... 01#p197201
pero al ser tan sencilla la api, con curl sería también muy sencillo aunque te obligará a añadir alguna dll junto con el exe
http://forums.fivetechsupport.com/viewt ... rl#p219680
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
User avatar
jnavas
Posts: 399
Joined: Wed Nov 16, 2005 12:03 pm
Location: Caracas - Venezuela
Contact:

Re: Lectura de API desde FW

Post by jnavas »

Saludos y Gracias.

Code: Select all

#Include "Fivewin.ch"
//--------------------------------
Function Main()

    Local oHttp
 
    Try
        oHttp := CreateObject( 'MSXML2.XMLHTTP' )
    Catch
        oHttp := CreateObject( 'Microsoft.XMLHTTP' )
    End

    oHttp:Open( 'POST', "https://petroapp-price.petro.gob.ve/price/", .F. )

    oHttp:SetRequestHeader( "Content-Type","application/json")
   
//    oHttp:Send( '{ "Username": "user@company.com", "Password": "secret"}' )
    SysRefresh()
   
    MsgInfo(oHttp:ResponseBody)

Return

 
Application
===========
Path and name: C:\FWH15\samples\PETROS.exe (32 bits)
Size: 2,938,880 bytes
Compiler version: Harbour 3.2.0dev (r1603082110)
FiveWin Version: FWH 15.03
Windows version: 6.2, Build 9200

Time from start: 0 hours 0 mins 0 secs
Error occurred at: 11/19/19, 12:53:18
Error description: (DOS Error -2147352567) WINOLE/1007 Unspecified error
(0x80004005): msxml3.dll

Stack Calls
===========
Called from: => TOLEAUTO:RESPONSEBODY( 0 )
Called from: PETROS.prg => MAIN( 22 )

System
======
CPU type: Intel(R) Core(TM) i7-4702MQ CPU @ 2.20GHz 2200 Mhz
Hardware memory: 8074 megs

Free System resources: 90 %
GDI resources: 90 %
User resources: 90 %

Windows total applications running: 4
1 ,
2 , C:\Windows\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.9600.17810_none_7c5b6
3 GDI+ Window, C:\Windows\WinSxS\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.9600.19457_none_dadc49905bc8c0
4 Task Switching, C:\FWH15\samples\PETROS.exe

Variables in use
================
Procedure Type Value
==========================
TOLEAUTO:RESPONSEBODY
Param 1: O Class: ERROR
MAIN
Local 1: U
Local 2: U
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Lectura de API desde FW

Post by cnavarro »

Juan, parece que el error que obtienes es porque no "envias" nada.
Es decir, no utilizas el Send(), ponlo aunque no envíes nada a ver qué obtienes y vas cogiendo pistas: oHttp:Send()
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
User avatar
jnavas
Posts: 399
Joined: Wed Nov 16, 2005 12:03 pm
Location: Caracas - Venezuela
Contact:

Re: Lectura de API desde FW

Post by jnavas »

Navarro,
Gracias por la recomendacion

Agregue
oHttp:Send()
Esta es la respuesta.

{"status":500,"success":false,"data":null,"message":false}

Code: Select all


    Local oHttp
 
    Try
        oHttp := CreateObject( 'MSXML2.XMLHTTP' )
    Catch
        oHttp := CreateObject( 'Microsoft.XMLHTTP' )
    End

    oHttp:Open( 'POST', "https://petroapp-price.petro.gob.ve/price/", .F. )

    oHttp:SetRequestHeader( "Content-Type","application/json")
   
    oHttp:Send() 

    SysRefresh()

    MsgInfo(oHttp:ResponseBody)

Return

 
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Lectura de API desde FW

Post by cnavarro »

Ok, bien, entonces lo que te está diciendo es que no le has enviado ningún datos para procesar

Code: Select all

#Include "Fivewin.ch"
//--------------------------------
Function Main()

    Local oHttp
local cJson := ""
TEXT INTO cJson
 {
  coins: [
   "BTC",
   "DASH",
   "LTC",
   "ETH",
   "PTR"
  ],
  fiats: [
   "USD",
   "ARS",
   "BRL",
   "BOB",
   "CAD",
   "COP",
   "CLP",
   "MXP",
   "NIO",
   "PEN",
   "DOP",
   "TTD",
   "UYU",
   "ANG",
   "CZK",
   "DKK"
  ]
 }
ENDTEXT

    Try
        oHttp := CreateObject( 'MSXML2.XMLHTTP' )
    Catch
        oHttp := CreateObject( 'Microsoft.XMLHTTP' )
    End

    oHttp:Open( 'POST', "https://petroapp-price.petro.gob.ve/price/", .F. )

    oHttp:SetRequestHeader( "Content-Type","application/json")

// Es posible que necesites poner esto también, aunque no lo he probado, prueba sin ello y con ello
// oHttp:SetRequestHeader( "Host",  "api-price.petro.dom" )

oHttp:Send( cJson )

   MsgInfo(oHttp:ResponseBody)

Return nil




 
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
User avatar
jnavas
Posts: 399
Joined: Wed Nov 16, 2005 12:03 pm
Location: Caracas - Venezuela
Contact:

Re: Lectura de API desde FW

Post by jnavas »

Navarro
Gracias, esta fue la respuesta generado con el ejemplo que me indicaste

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
<pre>Bad Request</pre>
</body>
</html>
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Lectura de API desde FW

Post by cnavarro »

Bien, entonces no nos compliquemos, hazlo asi
Por cierto, puedes llamarme Cristobal.

Code: Select all

#Include "Fivewin.ch"
//--------------------------------
Function Main()

   local oHttp
   local hJson := { => }
   local cJson := ""
    hJson[ "coins" ] := {"BTC","DASH","LTC","ETH","PTR"}
    hJson[ "fiats" ] := {"USD","ARS","BRL","BOB","CAD","COP","CLP","MXP","NIO","PEN","DOP","TTD","UYU","ANG","CZK","DKK"}
    Try
        oHttp := CreateObject( 'MSXML2.XMLHTTP' )
    Catch
        oHttp := CreateObject( 'Microsoft.XMLHTTP' )
    End

    oHttp:Open( 'POST', "https://petroapp-price.petro.gob.ve/price/", .F. )

    oHttp:SetRequestHeader( "Content-Type","application/json")

// Es posible que necesites poner esto también, aunque no lo he probado, prueba sin ello y con ello
// oHttp:SetRequestHeader( "Host",  "api-price.petro.dom" )
   cJson := hb_jsonEncode( hJson,.T.)
//   ? cJson
   oHttp:Send( cJson )

   MsgInfo(oHttp:ResponseBody)

Return nil
 
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
User avatar
jnavas
Posts: 399
Joined: Wed Nov 16, 2005 12:03 pm
Location: Caracas - Venezuela
Contact:

Re: Lectura de API desde FW

Post by jnavas »

Cristobal
Gracias,
Lo probare, ahorita estoy mudando de PC, para el mes siguiente tengo planificado migrar mi aplicación de XHB.82/FW24 hacia el nuevo FW que publique Antonio para diciembre, he visto que has creado una clase tdocpanel para crear dashboard, esta disponible?. Enviare precio por favor al correo adaptaprodrive@gmail.com
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Lectura de API desde FW

Post by cnavarro »

Juan, el ejemplo del API está probado por eso lo he puesto
En cuanto a mi clase TDockPnel, la incluí en Fivewin, pero no está disponible el código en la distribución de FiveWin
Si necesitas cualquier cosa, ya sabes, por aqui o a mi correo
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
User avatar
jnavas
Posts: 399
Joined: Wed Nov 16, 2005 12:03 pm
Location: Caracas - Venezuela
Contact:

Re: Lectura de API desde FW

Post by jnavas »

Cristobal,

Gracias, aun estoy migrando mi PC, apenas este disponible pruebo el API,
Con respecto a la clase tdockpanel necesito crear unos dashboard directos en FW, estoy tramitando la adquisición de FW para diciembre y lograr usarlo de manera productiva, muy elegantes los ejemplos, pronto empezara a compilarlos para implementarlos. Agradecido por los buenos oficios.
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Lectura de API desde FW

Post by cnavarro »

Gracias
Las posibilidades de TDockPnel son muchísimas
Cualquier duda, ya sabes.
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
Post Reply