Lectura de API desde FW

Lectura de API desde FW

Postby jnavas » 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.
User avatar
jnavas
 
Posts: 472
Joined: Wed Nov 16, 2005 12:03 pm
Location: Caracas - Venezuela

Re: Lectura de API desde FW

Postby Compuin » Tue Nov 19, 2019 1:13 pm

Buenos dias Sr Juan

Aca hay un ejemplo del uso de las API

viewtopic.php?f=6&t=25471&hilit=leer+api
FWH 20.12
Hbmk2 32/64 Bits (Build 19.29.30133)
Microsoft Visual C 32 Bits
MySql 8.0.24 32/64 Bits
VS Code
Compuin
 
Posts: 1213
Joined: Tue Dec 28, 2010 1:29 pm
Location: Quebec, Canada

Re: Lectura de API desde FW

Postby cnavarro » Tue Nov 19, 2019 1: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=3&t=36827&hilit=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
User avatar
cnavarro
 
Posts: 6500
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Lectura de API desde FW

Postby jnavas » Tue Nov 19, 2019 4:57 pm

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
User avatar
jnavas
 
Posts: 472
Joined: Wed Nov 16, 2005 12:03 pm
Location: Caracas - Venezuela

Re: Lectura de API desde FW

Postby cnavarro » Tue Nov 19, 2019 8: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
User avatar
cnavarro
 
Posts: 6500
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Lectura de API desde FW

Postby jnavas » Tue Nov 19, 2019 9:47 pm

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

 
User avatar
jnavas
 
Posts: 472
Joined: Wed Nov 16, 2005 12:03 pm
Location: Caracas - Venezuela

Re: Lectura de API desde FW

Postby cnavarro » 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: 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




 
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
User avatar
cnavarro
 
Posts: 6500
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Lectura de API desde FW

Postby jnavas » Wed Nov 20, 2019 2: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>

User avatar
jnavas
 
Posts: 472
Joined: Wed Nov 16, 2005 12:03 pm
Location: Caracas - Venezuela

Re: Lectura de API desde FW

Postby cnavarro » Wed Nov 20, 2019 11:33 am

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
 
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
User avatar
cnavarro
 
Posts: 6500
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Lectura de API desde FW

Postby jnavas » 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
User avatar
jnavas
 
Posts: 472
Joined: Wed Nov 16, 2005 12:03 pm
Location: Caracas - Venezuela

Re: Lectura de API desde FW

Postby cnavarro » Sat Nov 23, 2019 4: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
User avatar
cnavarro
 
Posts: 6500
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Lectura de API desde FW

Postby jnavas » Mon Nov 25, 2019 8: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.
User avatar
jnavas
 
Posts: 472
Joined: Wed Nov 16, 2005 12:03 pm
Location: Caracas - Venezuela

Re: Lectura de API desde FW

Postby cnavarro » Mon Nov 25, 2019 9: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
User avatar
cnavarro
 
Posts: 6500
Joined: Wed Feb 15, 2012 8:25 pm
Location: España


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 81 guests