Page 1 of 1
Manejo de WebServices
Posted: Thu Oct 15, 2020 10:24 pm
by noe aburto
Buen dia,
Estoy desarrollando Web Services con la clase MSXML2.XMLHTTP y para saber el valor de la respuesta del servidor estoy utilizando el metodo Status pero me esta marcando el error: "(DOS Error -2147352567) WINOLE/1007 Error no especificado
(0x80004005): msxml3.dll"
Cual sera el problema?
Les envio parte del codigo:
oHttp:=CreateObject("MSXML2.XMLHTTP")
oHttp:Open("POST", "https://exchange-staging.motiveintegrator.com/mockservice/ford/fmc-5-1/otc")
oHttp:SetRequestHeader("x-motive-app-id", "3fb559a4-5f8a-4b40-a710-e3c110e82440")
oHttp:SetRequestHeader("x-motive-eval-type-id", "05648e56-0808-4db1-a42a-261c5ee87ce8")
oHttp:SetRequestHeader("x-motive-trigger-id", "8077")
oHttp:SetRequestHeader("Authorization", "Bearer &eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6InI1VFl6SHFoX3BPZjVWYX...")
oHttp:SetRequestHeader("Content-Type", "text/xml; charset=utf-8")
oHttp:SetRequestHeader("Host", "b2dgwqa.ford.com")
oHttp:SetRequestHeader("Content-Length", "11366")
oHttp:SetRequestHeader("Expect", "100-continue")
oHttp:Send( cSoap )
IF ( oHttp:status == 200 )
MsgInfo(oHttp:ResponseText)
ELSE
MsgInfo(oHttp:statusText )
ENDIF
Re: Manejo de WebServices
Posted: Fri Oct 16, 2020 9:02 am
by PGO
Buenos dias,
Acabo de terminar la conexion con un Web service y he utilizado
oApi:oHttp:= CreateObject( 'MSXML2.ServerXMLHTTP.6.0' )
Un saludo
Re: Manejo de WebServices
Posted: Fri Oct 16, 2020 9:13 am
by Antonio Linares
Paco,
Sería estupendo si pudieses mostrar el código de como lo has hecho, ó un ejemplo, para ayudar a otros compañeros
Gracias!
Re: Manejo de WebServices
Posted: Sat Oct 17, 2020 12:55 am
by PGO
Buenas noches
Como me solicita Antonio, pongo parte del código desarrollado por si sirve de ayuda para alguien.
Code: Select all | Expand
// 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
Re: Manejo de WebServices
Posted: Sat Oct 17, 2020 8:30 am
by Antonio Linares
Gracias!
Re: Manejo de WebServices
Posted: Sat Oct 17, 2020 2:04 pm
by noe aburto
Muchas gracias, lo voy a checar y ver si me ayuda a resolver mi problema.