Do forum internacional do Harbour.
Código: Selecionar todos
**************************************************************
cUrl:= "https://palena.sii.cl/cgi_dte/UPL/DTEUpload"
oRestApi:=openRestApi()
IF ! EMPTY(oRestApi)
cHtml := SendRestApi( oRestApi , cUrl, cEnvioDte, cHeader, cToken )
Hb_MemoWrit( "EnvioPrueba.xml", cHtml )
ENDIF
Return (cHtml) //Devuelve respuesta del API ya sea Json o Xml
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
* FUNCION : OpenRestApi
* COMENTARIO: Esta Funcion permite enviar los DTE al SII en forma automatica
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
FUNCTION OpenRestApi
LOCAL oRestApi := ""
LOCAL nTimeOut := 20 //seconds
//Init
BEGIN SEQUENCE WITH {|o| break(o)}
oRestApi := Win_OleCreateObject( "MSXML2.ServerXMLHTTP" )
// nResolve nConnect nSend nRecieve
oRestApi:setTimeouts( nTimeout * 1000 , nTimeout * 1000 , nTimeout * 1000 , nTimeout * 1000 )
RECOVER
MsgStop( "Microsoft XML Core Services (MSXML) 6.0 is not installed."+CRLF+;
"Download and install MSXML 6.0 from http://msdn.microsoft.com/xml"+CRLF+;
"before continuing.")
END SEQUENCE
RETURN( oRestApi )
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
* FUNCION : SendRestApi
* COMENTARIO: Esta Funcion permite enviar los DTE al SII en forma automatica
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
FUNC SendRestApi( oRestApi, cUrl , cBody , cRequest, cToken , cMethod )
LOCAL cReturn,cResp
DEFAULT cMethod := "POST" //<- aqui en algunos casos es "GET"
DO EVENTS
BEGIN SEQUENCE WITH {|o| break(o)}
set( _SET_CODEPAGE, 'ESWIN' )
oRestApi:Open( cMethod , cUrl )
CargaHeader(oRestApi,cToken,cBody)
oRestApi:Send(cBody) // cBody
IF oRestApi:Status <> 200
BREAK "HTTP status: " + hb_NToS(oRestApi:status) + " " + oRestApi:statusText
ELSE
lEnviado := .T.
ENDIF
cReturn := oRestApi:ResponseBody()
// cResp := oRestApi:ResponseText()
RECOVER USING oErr
cReturn := "!ERROR!" + CRLF + HB_TRANSLATE( IF (ValType(oErr) = 'O', oErr:Description, oErr ), 'ESWIN')
END SEQUENCE
RETURN cReturn
function CargaHeader(oRestApi,cToken,cBody)
oRestApi:setRequestHeader("Accept" , "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg,application/vnd.ms-powerpoint, application/ms-excel,application/msword, */*") //+ CRLF)
oRestApi:setRequestHeader("Referer" , "https://www.javsistemas.cl") //+CRLF)
oRestApi:setRequestHeader("Accept-Language" , "es-cl") //+CRLF)
oRestApi:setRequestHeader("Content-Type" , "multipart/form-data: boundary=9022632e1130lc4") //+CRLF)
oRestApi:setRequestHeader("Accept-Encoding" , "gzip, deflate") //+CRLF)
oRestApi:setRequestHeader("User-Agent" , "Mozilla/4.0 (compatible; PROG 1.0; Windows NT 5.0; YComp 5.0.2.4)") //+CRLF)
oRestApi:setRequestHeader("Host" , "palena") //+CRLF)
oRestApi:setRequestHeader("Content-Length" , alltrim(str(len(cBody)))) //+CRLF)
oRestApi:setRequestHeader("Keep-Alive" , "true") //+CRLF)
oRestApi:setRequestHeader("Cache-Control" , "no-cache") //+CRLF)
oRestApi:setRequestHeader("Cookie" , "TOKEN="+alltrim(cToken)) //+CRLF)
Return
Saudações,
Itamar M. Lins Jr.
