Rastrear objeto no site dos Correios

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
software_facil
Usuário Nível 3
Usuário Nível 3
Mensagens: 211
Registrado em: 23 Fev 2005 12:19
Localização: Curitiba/PR
Contato:

Rastrear objeto no site dos Correios

Mensagem por software_facil »

Prezados, alguém já fez rotina para pesquisar o andamento de um objeto pelo site
dos Correios ? Tenho uma rotina que busca o endereço através do cep, no site dos
Correios, mas não consegui adaptar para fazer essa nova tarefa.

Abraços

Marcelo Neves
messenger : software_facil@hotmail.com
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Re: Rastrear objeto no site dos Correios

Mensagem por asimoes »

Olá Marcelo,

Eu não tenho, mas fiquei interessado na rotina de consulta do endereço pelo cep no site dos correios, você poderia publicar aqui no forúm?

[]´s
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
software_facil
Usuário Nível 3
Usuário Nível 3
Mensagens: 211
Registrado em: 23 Fev 2005 12:19
Localização: Curitiba/PR
Contato:

Re: Rastrear objeto no site dos Correios

Mensagem por software_facil »

Bom dia Asimoes,

Estou enviando a rotina, e se não me engano, quem passou foi o Sygecom, portanto, não são meus os créditos.

Código: Selecionar todos

static function buscar_endereco()

       Local oUrl,opg,cUrl:=cBuf:=aUF:=aCID:=aBAI:=aLOG:=aCEP:="",nPos:=0
       Local aRet  := {}
       local x_cep := form_registro.gbox_cep_remext.value
       local cCEP  := space(08)

       if Inetestaconectada() == .F.
          msgexclamation('Este computador não possui acesso a Internet','Atenção')
          return(nil)
       endif

       if empty(x_cep)
          msgexclamation('Primeiro digite um CEP','Atenção')
          form_registro.gbox_cep_remext.setfocus
          return(nil)
       endif

       cCEP := alltrim(x_cep)
       
       oUrl:=turl():New("http://www.correios.com.br/servicos/dnec/consultaLogradouroAction.do?Metodo=listaLogradouro&CEP="+ cCEP + "&TipoConsulta=cep")
       cUrl:="http://www.correios.com.br/servicos/dnec/consultaLogradouroAction.do?Metodo=listaLogradouro&CEP=" + cCEP + "&TipoConsulta=cep"
       opg := TipClientHttp():New( oUrl ,.t.)
       opg:nConnTimeout := 20000
       
       if opg:Open( cUrl )
          oPg:Post("?Metodo=listaLogradouro&CEP=" + cCEP + "&TipoConsulta=cep") //ResponseText
          cUrl:="http://www.correios.com.br/servicos/dnec/detalheCEPAction.do?Metodo=detalhe&Posicao=1&TipoCep=2&CEP=$query"
          opg:Open( cUrl )
          oPg:Post("?Metodo=detalhe&Posicao=1&TipoCep=2&CEP=$query") //ResponseText
          cBuf := opg:readAll()

          cBuf = Stuff(cBuf,1,at('Logradouro:',cBuf)-87,"")
          cBuf = Stuff(cBuf,at('</table>',cBuf)+8,len(cBuf),"")

          nPos := at("value",cBuf)+7
          aLOG := substr(cBuf, nPos, at('</td>', cBuf, nPos) - nPos)
          nPos := at("value",cBuf,nPos)+7
          aBAI := substr(cBuf, nPos, at('</td>', cBuf, nPos) - nPos)
          nPos := at("value",cBuf,nPos)+7
          aCID := substr(cBuf, nPos, at('/',     cBuf, nPos) - nPos)
          aUF  := substr(cBuf, at('/', cBuf, nPos)+1, 2)
          nPos := at("value",cBuf,nPos)+7
          aCEP := substr(cBuf, nPos, at('</td>', cBuf, nPos) - nPos)
          opg:close()

          if cCEP == strtran(aCEP,'-')
             aadd( aRet, aLOG )
             aadd( aRet, aBAI )
             aadd( aRet, aCID )
             aadd( aRet, aUF  )
             aadd( aRet, aCEP )
          endif
       endif

       if len(aRet) = 0
          msgexclamation('Cep não encontrado','Atenção')
       else
          setproperty('form_registro','gbox_endereco_remext','value',aRet[1])
          setproperty('form_registro','gbox_bairro_remext','value',aRet[2])
          setproperty('form_registro','gbox_cidade_remext','value',aRet[3])
          setproperty('form_registro','gbox_uf_remext','value',aRet[4])
       endif

       return(nil)
Eu uso xHarbour e MiniGUI, se vc usa outra lib gráfica, é bem fácil portar, só mudar as chamadas de tela.
Como vc vê no código, basta chamar a função no action de um botão por exemplo, que ele faz o serviço, se estiver tudo ok, usando o setproperty, eu preencho os respectivos campos com as informações encontradas.

Abaixo segue o código da função inetestaconectada()

Código: Selecionar todos

function inetestaconectada( cAddress )

LOCAL aHosts
LOCAL cName
InetInit()
IF cAddress == NIL
   cAddress := "www.google.com.br"
ENDIF
aHosts := InetGetHosts( cAddress )
IF aHosts == NIL .or. len(aHosts)=0
   InetCleanup()
   RETURN .f.
endif
InetCleanup()
RETURN .t.
Abraços

Marcelo Neves
messenger : software_facil@hotmail.com
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Re: Rastrear objeto no site dos Correios

Mensagem por asimoes »

Marcelo,

Obrigado pela dica.

Onde eu encontro esta função setproperty?

[]´s
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

Re: Rastrear objeto no site dos Correios

Mensagem por HASA »

software_facil escreveu:função setproperty
:)) A função setproperty() faz parte da MINIGUI.lib ok
Honório
Responder