Exemplo usar REST API

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Exemplo usar REST API

Mensagem por Itamar M. Lins Jr. »

Olá!
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
Créditos: -> José Santos Arias Vega <jsariasv@gmail.com>

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Exemplo usar REST API

Mensagem por JoséQuintas »

Tem aqui no fórum inclusive da API do IFOOD.
Achei que nesse tem muita coisa, inclusive configuração de idioma da Espanha.
Mas não deixa de ser um exemplo.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Exemplo usar REST API

Mensagem por Itamar M. Lins Jr. »

Olá!
Tem aqui no fórum inclusive da API do IFOOD.
Tem que colocar aqui então com o passo a passo e explicações, para esse "dementado que vos escreve" pq eu acompanho aquela thread e não entendi direito.
Nem essa que postei. Mas sei que um dia irei usar.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Exemplo usar REST API

Mensagem por JoséQuintas »

É basicamente igual do XML, mudando o content-type.
Outras coisas dependem do webservice.

Nessa ele separou em rotinas, o que pode confundir um pouco.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder