Manejo de WebServices

Manejo de WebServices

Postby noe aburto » Thu Oct 15, 2020 10:24 pm

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
User avatar
noe aburto
 
Posts: 418
Joined: Wed Nov 26, 2008 6:33 pm
Location: Morelia, Mich. Mexico.

Re: Manejo de WebServices

Postby PGO » Fri Oct 16, 2020 9:02 am

Buenos dias,

Acabo de terminar la conexion con un Web service y he utilizado

oApi:oHttp:= CreateObject( 'MSXML2.ServerXMLHTTP.6.0' )

Un saludo
PGO
 
Posts: 17
Joined: Tue Aug 25, 2020 10:05 pm

Re: Manejo de WebServices

Postby Antonio Linares » Fri Oct 16, 2020 9:13 am

Paco,

Sería estupendo si pudieses mostrar el código de como lo has hecho, ó un ejemplo, para ayudar a otros compañeros

Gracias!
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42127
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Manejo de WebServices

Postby PGO » Sat Oct 17, 2020 12:55 am

Buenas noches

Como me solicita Antonio, pongo parte del código desarrollado por si sirve de ayuda para alguien.

Code: Select all  Expand view  RUN

// 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
PGO
 
Posts: 17
Joined: Tue Aug 25, 2020 10:05 pm

Re: Manejo de WebServices

Postby Antonio Linares » Sat Oct 17, 2020 8:30 am

Gracias!
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42127
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Manejo de WebServices

Postby noe aburto » Sat Oct 17, 2020 2:04 pm

Muchas gracias, lo voy a checar y ver si me ayuda a resolver mi problema.
Noé Aburto Sánchez
Tec. Prog. de Sistemas. -Morelia, Mich. México.
fwh 20.06, Harbour 3.2.0, bcc 7.4
TsBrowse 9.0, TsButton 7.0, xEdit 6.1
naburtos@gmail.com, noeaburto67@hotmail.com
User avatar
noe aburto
 
Posts: 418
Joined: Wed Nov 26, 2008 6:33 pm
Location: Morelia, Mich. Mexico.


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 64 guests