Algo asi:
#define CR_LF chr(13) + chr(10)
***************
FUNCTION MAIN()
***************
local lRet := .T.
if !InternetOK()
Alert("Sem conexão com a Internet. Verifique...")
return .F.
endif
//
// ABERTURA DAS FUNCOES PARA WEBSERVICE DO XHARBOUR - OBJETO HTTP
//
try
http := CreateObject( "MSXML2.XMLHTTP" )
catch
try
http := CreateObject( "MSXML2.XMLHTTP" )
catch
Alert("Erro na criação do objeto MSXML2.XMLHTTP : " + Ole2TxtError())
end
end
//
// CRIA OBJETO XML
//
try
doc := CreateObject( "MSXML2.DOMDocument" )
catch
try
doc := CreateObject( "MSXML2.DOMDocument" )
catch
Alert("Erro na criacao do objeto MSXML2.DOMDocument : " + Ole2TxtError())
return .F.
end
end
cXml := ""
cXml += '<?xml version="1.0" encoding="ISO-8859-1" ?>' + CR_LF
cXml += '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/">' + CR_LF
cXml += ' <soapenv:Header/>' + CR_LF
cXml += ' <soapenv:Body>' + CR_LF
cXml += ' <tem:ConsultaDadosArquivoSNGPC>' + CR_LF
cXml += ' <tem:Email>' + SEU_EMAIL_AQUI + '</tem:Email>' + CR_LF
cXml += ' <tem:Senha>' + SUA_SENHA_AQUI + '</tem:Senha>' + CR_LF
cXml += ' <tem:CNPJ>' + CNPJ_DA_EMPRESA + '</tem:CNPJ>' + CR_LF
cXml += ' <tem:Hash>' + HASH_DO_ARQUIVO + '</tem:Hash>' + CR_LF
cXml += ' </tem:ConsultaDadosArquivoSNGPC>' + CR_LF
cXml += ' </soapenv:Body> ' + CR_LF
cXml += '</soapenv:Envelope>' + CR_LF
//
// ENDERECO HOMOLOGACAO
//
http:Open( "POST", "http://homologacao.anvisa.gov.br/sngpc/webservice/sngpc.asmx?WSDL HTTP/1.1", .F. )
http:SetRequestHeader( "Content-Type" , "text/xml;charset=ISO-8859-1" )
http:SetRequestHeader( "SOAPAction" , "http://tempuri.org/ConsultaDadosArquivoSNGPC" )
http:SetRequestHeader( "Host" , "homologacao.anvisa.gov.br" )
//
// ENDERECO PRODUCAO
//
// http:Open( "POST", "http://sngpc.anvisa.gov.br/webservice/sngpc.asmx?WSDL HTTP/1.1", .F. )
// http:SetRequestHeader( "Content-Type" , "text/xml;charset=ISO-8859-1" )
// http:SetRequestHeader( "SOAPAction" , "http://tempuri.org/ConsultaDadosArquivoSNGPC" )
// http:SetRequestHeader( "Host" , "sngpc.anvisa.gov.br" )
doc:LoadXML( cXml )
http:send( doc:xml )
response := http:responseText
oXmlDoc := TXmlDocument():new()
oXMlDoc:read( response )
oXmlNode := oXmlDoc:findFirst( "ConsultaDadosArquivoSNGPCResult" )
cDados := oXmlNode:cData
oXMlDoc:read( cDados )
oXmlNode := oXmlDoc:findFirst( "DATAVALIDACAO" )
if oXmlNode == NIL .or. oXmlNode:cData == NIL .or. empty( oXmlNode:cData )
Alert("Arquivo ainda nao foi validado...")
lRet := .F.
else
cMens := oXmlNode:cData
oXmlNode := oXmlDoc:findFirst( "MENSAGEMVALIDACAO" )
if oXmlNode == NIL
Alert("Arquivo validado em : " + cMens )
else
nHandle := fcreate( "temp.txt" )
fwrite( nHandle, oXmlNode:cData )
fclose( nHandle )
nHandle := fopen( "temp.txt" )
aLinhas := {}
cLinha := ""
while HB_FReadLine( nHandle, @cLinha, "[NOVA_LINHA]" ) == 0
aadd( aLinhas, cLinha )
enddo
aadd( aLinhas, cLi
nha )
fclose( nHandle )
if Alert("Arquivo enviado n„o foi recebido. Emite relat¢rio com erros ?", { "SIM", "NAO" } ) == 1
// IMPRIME RELATORIO COM ERROS DE VALIDACAO DO XML
endif
lRet := .F.
endif
endif
RETURN lRet
*********************
FUNCTION InternetOK()
*********************
local aHosts, cName, cAddress := "www.google.com.br"
InetInit()
aHosts := InetGetHosts( cAddress )
if aHosts == NIL .or. len(aHosts) == 0
InetCleanup()
return .F.
endif
InetCleanup()
RETURN .T.