Código: Selecionar todos
#include "hbxml.ch"
#include "hbclass.ch"
function main()
local cep := BuscaCEP():New("99999999")
? cep:GetTipo() + " " + cep:GetLogradouro()
? cep:GetBairro()
? cep:GetCidade()
? cep:GetUF()
return nil
class BuscaCEP
private:
data cLogradouro init ""
data cBairro init ""
data cCidade init ""
data cTipo init ""
data cCep init ""
data cUF init ""
data cSrvResp init ""
public:
method new(cep) constructor
method busca(cep)
inline method GetLogradouro()
return ::cLogradouro
endmethod
inline method GetBairro()
return ::cBairro
endmethod
inline method GetCidade()
return ::cCidade
endmethod
inline method GetTipo()
return ::cTipo
endmethod
inline method GetUF()
return ::cUF
endmethod
inline method GetSrvSts()
return ::cSrvResp
endmethod
endclass
method new(cep) class BuscaCEP
if cep != nil
::cCep := cep
else
::cCep := "99999999"
endif
::busca()
return self
method busca(cep) class BuscaCEP
local oHttp, cXML
local oDoc, oIterator
if cep != nil
::cCep := cep
endif
oHttp:= TIpClientHttp():new( "http://cep.republicavirtual.com.br/web_cep.php?cep="+::cCep+"&formato=xml" )
oHttp:open()
cXML := oHttp:readAll()
oHttp:close()
oDoc := TXmlDocument():New(cXML, HBXML_STYLE_NOESCAPE)
if oDoc:nError != HBXML_ERROR_NONE
? "Erro ao ler o XML dos correios"
endif
oIterator := TXmlIterator():New( oDoc:findfirst( "webservicecep" ) )
if oIterator:Next():cData == "1"
::cSrvResp := oIterator:Next():cData
::cUF := oIterator:Next():cData
::cCidade := oIterator:Next():cData
::cBairro := oIterator:Next():cData
::cTipo := oIterator:Next():cData
::cLogradouro := oIterator:Next():cData
else
? "ERRO :("
endif
return nil


