Page 1 of 1

Lectura de API desde FW

PostPosted: Tue Nov 19, 2019 12:50 pm
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.

Re: Lectura de API desde FW

PostPosted: Tue Nov 19, 2019 1:13 pm
by Compuin
Buenos dias Sr Juan

Aca hay un ejemplo del uso de las API

viewtopic.php?f=6&t=25471&hilit=leer+api

Re: Lectura de API desde FW

PostPosted: Tue Nov 19, 2019 1:14 pm
by cnavarro
Aqui tienes un ejemplo
viewtopic.php?p=197201#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
viewtopic.php?f=3&t=36827&hilit=curl#p219680

Re: Lectura de API desde FW

PostPosted: Tue Nov 19, 2019 4:57 pm
by jnavas
Saludos y Gracias.

Code: Select all  Expand view

#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

Re: Lectura de API desde FW

PostPosted: Tue Nov 19, 2019 8:19 pm
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()

Re: Lectura de API desde FW

PostPosted: Tue Nov 19, 2019 9:47 pm
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  Expand view


    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

 

Re: Lectura de API desde FW

PostPosted: Tue Nov 19, 2019 10:47 pm
by cnavarro
Ok, bien, entonces lo que te está diciendo es que no le has enviado ningún datos para procesar

Code: Select all  Expand view

#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




 

Re: Lectura de API desde FW

PostPosted: Wed Nov 20, 2019 2:26 am
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>


Re: Lectura de API desde FW

PostPosted: Wed Nov 20, 2019 11:33 am
by cnavarro
Bien, entonces no nos compliquemos, hazlo asi
Por cierto, puedes llamarme Cristobal.
Code: Select all  Expand view

#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
 

Re: Lectura de API desde FW

PostPosted: Sat Nov 23, 2019 12:14 pm
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

Re: Lectura de API desde FW

PostPosted: Sat Nov 23, 2019 4:06 pm
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

Re: Lectura de API desde FW

PostPosted: Mon Nov 25, 2019 8:44 pm
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.

Re: Lectura de API desde FW

PostPosted: Mon Nov 25, 2019 9:01 pm
by cnavarro
Gracias
Las posibilidades de TDockPnel son muchísimas
Cualquier duda, ya sabes.