Buenas noches
Como me solicita Antonio, pongo parte del código desarrollado por si sirve de ayuda para alguien.
// En oApi:cUrl guardo la Url principal de la webservice
// en las llamadas a las diferentes opciones la completo con los parametros requeridos
function api_prv()
local oApi:=ApiPrv()
oApi:oHttp:= CreateObject( 'MSXML2.ServerXMLHTTP.6.0' )
define dialog oApi:odlg resource "API_PRV" of oApi:oVentana
//Definición de la pantalla de trabajo y los botones para hacer las llamadas a las diferentes opciones que se nos ofrece
activate dialog oApi:odlg nowait valid oApi:lSalir on init inicia_Api(oApi)
return nil
*-------------------------------------------------------------------------------------------------------------
static function inicia_Api(oApi)
MsgRun( "Accediendo a API ...",,{ || Accede_VPAPI(oApi)} )
if oApi:vToken <> ""
MsgRun( "Leyendo Campañas Activas ...",,{ || Campanas_VPAPI(oApi,ctod("01/01/2020"),ctod("31/12/2099"))} )
end if
return nil
*----------------------------------------------------------------------------------------------------
// Llamada al Login. Nos devuelvee el token que será el que sirva para la autorizacion de las diferentes opciones.
Procedure Accede_VPAPI(oApi)
local cUrl:=oApi:cUrl + "auth/login"
local aResult:= ""
local cXml:= "[{" + chr(34) + "username" + chr(34) + ":" + chr(34) + alltrim(oEmpresa:VPUsuario) + chr(34) + "," + chr(34) + "password" + chr(34) + ":" + chr(34) + alltrim(oEmpresa:VPPass) + chr(34) + "}]"
oApi:oHttp:Open( "POST" , cUrl, .F. )
oApi:oHttp:setRequestHeader("Content-Type","application/json")
oApi:oHttp:Send(&cXml)
if oApi:oHttp:status <> 200
msginfo("Usuario o Contraseña Incorrectos")
else
vRet:=fCrea_array(alltrim(oApi:oHttp:ResponseText))
for x:=1 to len(vRet)
if upper(vRet[x,1])="TOKEN"
oApi:vToken:=vRet[x,2]
end if
next x
end if
return
*----------------------------------------------------------------------------------------------------
// Un ejemplo de llamada a las campañas de venta
Procedure Campanas_VPAPI(oApi,vDesdeFecha,vHastaFecha)
local cUrl:=oApi:cUrl + "operations"
local cXml:= ""
local vDato:="", vRet:={}, x:=0
cXml:="[{" + chr(34) + "code" + chr(34) + ":" + chr(34) + "string" + chr(34) + ","
cXml+=chr(34) + "begindate" + chr(34) + ":" + chr(34) + dtos_format(vDesdeFecha) + "T00:00:00257Z" + chr(34) + ","
cXml+=chr(34) + "enddate" + chr(34) + ":" + chr(34) + dtos_format(vHastaFecha) + "T23:59:59257Z" + chr(34) + ","
cXml+=chr(34) + "status" + chr(34) + ":" + chr(34) + "string" + chr(34) + "}]"
oApi:oHttp:Open( "GET" , cUrl, .F. )
oApi:oHttp:setRequestHeader("Content-Type","textplain")
oApi:oHttp:setRequestHeader("Authorization", "Bearer " + oApi:vToken)
oApi:oHttp:Send(&cXml)
if oApi:oHttp:status <> 200
msginfo("Error " + allstr(oApi:oHttp:status) + " No se puede acceder a las camapañas")
else
oApi:aTbr1:={}
vDato := alltrim(oApi:oHttp:ResponseText)
vRet:=fCrea_array(vDato)
for x:=1 to len(vRet)
if upper(vRet[x,1])="CODE"
if f_fecha(vRet[x+1,2]) >= vDesdeFecha .and. f_fecha(vRet[x+2,2]) <= vHastaFecha
aadd(oApi:aTbr1,{vRet[x,2],f_fecha(vRet[x+1,2]),f_fecha(vRet[x+2,2]),vRet[x+3,2]})
end if
end if
next x
oApi:oTbr1:aArrayData := oApi:aTbr1
oApi:oTbr1:refresh()
end if
return
Un saludo para todos