#include "hbclass.ch" #ifndef XML_UTF8 #define XML_UTF8 '' #endif FUNCTION Main() LOCAL cChave := "1.2.201709.0000000000000226099" LOCAL oESocial := ESocialClass():New() oESocial:cCertificado := capicomescolhecertificado() oESocial:ConsultaRetornoLote( cChave ) ? oEsocial:cXmlRetorno RETURN( NIL ) CREATE CLASS ESocialClass VAR cCertificado INIT "" VAR cUrl INIT "" VAR cSoapAction INIT "" VAR cXmlDocumento INIT "" VAR cXmlEnvelope INIT "" VAR cXmlRetorno INIT "" METHOD ConsultaRetornoLote( cChave, cCertificado ) METHOD MicrosoftXmlSoapPost() ENDCLASS METHOD ConsultaRetornoLote( cChave, cCertificado ) CLASS ESocialClass IF cCertificado != NIL ::cCertificado := cCertificado ENDIF ::cUrl := "https://webservices.producaorestrita.esocial.gov.br/servicos/empregador/consultarloteeventos/WsConsultarLoteEventos.svc" ::cSOAPAction := "http://www.esocial.gov.br/servicos/empregador/lote/eventos/envio/consulta/retornoProcessamento/v1_1_0/ServicoConsultarLoteEventos/ConsultarLoteEventos" ::cXmlDocumento := ; '' + ; '' + ; '' + cChave + '' + ; '' + ; '' ::cXmlEnvelope := XML_UTF8 + ; '' + ; '' + ; '' + ; '' + ; '' + ; ::cXmlDocumento + ; '' + ; '' + ; '' + ; '' hb_MemoWrit( "consulta.xml", ::cXmlEnvelope ) ::MicrosoftXmlSoapPost() RETURN ::cXmlRetorno METHOD MicrosoftXmlSoapPost() CLASS ESocialClass LOCAL oComunicacao oComunicacao = win_oleCreateObject( "MSXML2.ServerXMLHTTP" ) oComunicacao:setOption( 3, "CURRENT_USER\MY\" + ::cCertificado ) oComunicacao:open( "POST", ::cUrl, .F. ) oComunicacao:SetRequestHeader( "SOAPAction", ::cSOAPAction ) oComunicacao:SetRequestHeader( "Content-Type", "text/xml; charset=utf-8" ) oComunicacao:send( ::cXmlEnvelope ) DO WHILE oComunicacao:readyState <> 4 Inkey( 0.5 ) ENDDO ::cXmlRetorno := oComunicacao:responseText RETURN NIL #ifdef __XHARBOUR__ FUNCTION win_oleCreateObject( ... ) RETURN xhb_CreateObject( ... ) #endif