FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Lectura de API desde FW
Posts: 492
Joined: Wed Nov 16, 2005 12:03 PM
Lectura de API desde FW
Posted: Tue Nov 19, 2019 12:50 PM

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.

Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Re: Lectura de API desde FW
Posted: Tue Nov 19, 2019 01:13 PM

Buenos dias Sr Juan

Aca hay un ejemplo del uso de las API

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

&&

FWH 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Lectura de API desde FW
Posted: Tue Nov 19, 2019 01:14 PM

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=3t=36827hilit=curl#p219680

&&
Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo

El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 492
Joined: Wed Nov 16, 2005 12:03 PM
Re: Lectura de API desde FW
Posted: Tue Nov 19, 2019 04:57 PM
Saludos y Gracias.

Code (fw): Select all Collapse
#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
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Lectura de API desde FW
Posted: Tue Nov 19, 2019 08:19 PM

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()

Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo

El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 492
Joined: Wed Nov 16, 2005 12:03 PM
Re: Lectura de API desde FW
Posted: Tue Nov 19, 2019 09:47 PM
Navarro,
Gracias por la recomendacion

Agregue
oHttp:Send()
Esta es la respuesta.

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

Code (fw): Select all Collapse
    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
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Lectura de API desde FW
Posted: Tue Nov 19, 2019 10:47 PM
Ok, bien, entonces lo que te está diciendo es que no le has enviado ningún datos para procesar

Code (fw): Select all Collapse
#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
Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo

El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 492
Joined: Wed Nov 16, 2005 12:03 PM
Re: Lectura de API desde FW
Posted: Wed Nov 20, 2019 02:26 AM

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>


Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Lectura de API desde FW
Posted: Wed Nov 20, 2019 11:33 AM
Bien, entonces no nos compliquemos, hazlo asi
Por cierto, puedes llamarme Cristobal.
Code (fw): Select all Collapse
#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
Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo

El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 492
Joined: Wed Nov 16, 2005 12:03 PM
Re: Lectura de API desde FW
Posted: Sat Nov 23, 2019 12:14 PM

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

Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Lectura de API desde FW
Posted: Sat Nov 23, 2019 04:06 PM

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

Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo

El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 492
Joined: Wed Nov 16, 2005 12:03 PM
Re: Lectura de API desde FW
Posted: Mon Nov 25, 2019 08:44 PM

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.

Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Lectura de API desde FW
Posted: Mon Nov 25, 2019 09:01 PM

Gracias
Las posibilidades de TDockPnel son muchísimas
Cualquier duda, ya sabes.

Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo

El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces

Continue the discussion