CEP dos correios on line

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
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

CEP dos correios on line

Mensagem por JoséQuintas »

Acrescentei um parâmetro no webservice
www.jpatecnologia.com.br/cep.asp?cep=00 ... &clipper=1

se passar clipper=1, retorna tudo em maiúsculas sem acento.
Até que não é muito diferente do Clipper, nessa parte. O difícil é lembrar do "then", e do "end if" separado

If cCipper = "1" Then
cpEndereco = TiraAcento(cpEndereco)
cpBairro = TiraAcento(cpBairro)
cpCidade = TiraAcento(cpCidade)
End If
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
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1297
Registrado em: 06 Jul 2004 00:44
Contato:

CEP dos correios on line

Mensagem por ANDRIL »

José, agora sim!!! Funcionou! Com certeza nossos colegas clippeiros poderão usar esta ótima ferramenta. Parabéns.
JoséQuintas escreveu:"end if" separado
Pois é, hoje mesmo eu programando em JavaScript me esbarrei no else if que é separado, eu não enxergava o erro que conseguentemente coloquei como no clipper elseif. Nossa cabeça pira com estas mesclagens de linguagens. Mais é assim mesmo.

Abraços.
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

CEP dos correios on line

Mensagem por Jairo Maia »

Olá José,

No meu caso mantenho acentuação, mas Meus Parabéns Também, ficou Show de Bola.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

CEP dos correios on line

Mensagem por JoséQuintas »

Por mais que eu tenha avisado, tem gente insistindo em abusar atualizando base local.
E o "abusador" nem sequer quis ter o trabalho de eliminar CEPs inválidos.
Tá consultando CEPs do tipo "08 -", "078__-___", e outros inválidos.
E o mais curioso é que os correios retornam resultado, o que acaba cadastrando lixo na minha base.
Antes que os correios bloqueiem meu ip de webservice, estou bloqueando esse ip.
Vou ter que pensar num esquema automático pra limitar consultas.
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
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

CEP dos correios on line

Mensagem por Jairo Maia »

Olá José,

É uma pena!!!

Da minha parte posso garantir que não estou atualizando base, e nem algum cliente brincando com CEP, já que meu sistema permite cep vazio, ou necessariamente todos os digitos. Que pena.

Para o "abusador", basta baixar a lista disponível na internet, pelo menos terá uma base de ceps que se não me engano é de 2005: Lista de CEPs
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

CEP dos correios on line

Mensagem por JoséQuintas »

Minha preocupação é só dos correios bloquearem.
Resolvi de um modo simples, pegando leve:

Um contador de consultas por IP, que é zerado a cada hora.
Se um IP ultrapassar o limite, faz uso somente da base local.
Mas volta ao normal na hora seguinte.
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
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

CEP dos correios on line

Mensagem por Jairo Maia »

Olá José,

Mas não está funcionando. Tentei testar esses ceps aqui de paulínia, que passou a ter ceps por rua em setembro/2011, e não retorna nada.

Ceps de Paulínia - SP:
13140-810 Angela Pigatto Ferro - r - Sta Terezinha
13142-472 Angelina Gatti Breda - r - Vl Mte Alegre
13142-380 Angelina Valério Furlan - r - Vl Mte Alegre

Já se digito o cep 13140-000, que era antes o da cidade, retorna a rua Dom Pedro I, mas porque está em seu banco de dados por testes que fiz anteriormente.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

CEP dos correios on line

Mensagem por asimoes »

Está mesmo com problema, tentei o cep da minha rua 20735-050 e está retornando isso:

Erro de tempo de execução do Microsoft VBScript erro '800a01a8'

Objeto necessário: 'cnConexao'

/cep.asp, line 127
►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
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

CEP dos correios on line

Mensagem por JoséQuintas »

Aprontei...
Fiquei testando o limite sempre com o mesmo CEP e não percebi que baguncei a consulta de CEP novo.
Já fiz a correção. Desculpem a falha.

A consulta nova:

<cep>13140-810</cep>
<logradouro>Rua Angela Pigatto Ferro</logradouro>
<bairro>Santa Terezinha</bairro>
<cidade>Paulínia</cidade>
<uf>SP</uf>
<infinc>2012/10/04 22:52 </infinc>
<tot>10</tot>
<stat>online</stat>

<infinc></infinc> é a data/hora de consulta nos correios
<tot></tot> é a quantidade de consultas do IP durante uma hora
<stat>online</stat> significa que não ultrapassou o limite
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
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

CEP dos correios on line

Mensagem por Jairo Maia »

Certinho José.

Meu sistema faz a busca na base local, e em caso de logradouro vazio uso seu webservice. Ficou muito legal o retorno do status do IP, embora no meu caso acho dífícil alguém exceder, mesmo assim permitirá avisar o cliente que o limite foi excedido.

Novamente, Parabéns e obrigado pela iniciativa.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

CEP dos correios on line

Mensagem por asimoes »

Olá José,
Para usar o loadXML eu tive retirar do responseText a tag <br> e </br> e acrescentar a tag <inixml> no inicio e </inixml> no final.

Código: Selecionar todos

cCep:="20735050"
try
   oPg := Win_OleCreateObject("Microsoft.XMLHTTP")
   oPg:Open("GET","http://www.jpatecnologia.com.br/cep.asp?cep=" +  Transform(cCep,"@R 99999-999")+"&clipper=1",.F.)
   oPg:Send()
   cBuf :=StrTran(oPg:responseText,'<br>')
   cBuf :=StrTran(cBuf,'</br>')
   cBuf := '<inixml>'+cBuf+'</inixml>'
   oXMLDoc := TOLEAUTO():New("Microsoft.XMLDOM")
   oXMLDoc:async := .f.
   oXMLDoc:loadXML( cBuf )
catch
   Alert("Erro! Ao tentar acessar o WEB SERVICE consulta de cep, tente mais tarde.")
end
cUf    := Upper(oXMLDoc:getElementsByTagName( "uf" ):item(0):Text)
cCid   := Upper(oXMLDoc:getElementsByTagName( "cidade" ):item(0):Text)
cBai   := Upper(oXMLDoc:getElementsByTagName( "bairro" ):item(0):Text)
cEnd   :=Upper(oXMLDoc:getElementsByTagName( "logradouro" ):item(0):Text)
►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
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

CEP dos correios on line

Mensagem por JoséQuintas »

Um pouquinho de estatística do webservice de CEP, desde que implementei o controle de IP.
Não preciso nem dizer o que considerei abuso.... rs
&nbsp&nbsp&nbspConsultas por IP:&nbsp
&nbspIP 1&nbsp&nbsp15.023&nbsp
&nbspIP 2&nbsp&nbsp243&nbsp
&nbspIP 3&nbsp&nbsp223&nbsp
&nbspIP 4&nbsp&nbsp220&nbsp
&nbspIP 5&nbsp&nbsp180&nbsp
&nbspIP 6&nbsp&nbsp120&nbsp
&nbspIP 7&nbsp&nbsp94&nbsp
&nbspIP 8&nbsp&nbsp63&nbsp
&nbspIP 9&nbsp&nbsp44&nbsp
&nbspIP 10&nbsp&nbsp43&nbsp
Obs. O IP do primeiro lugar continua consultando 24 horas sem parar, mas nos limites (se meu controle estiver certo).
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
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

CEP dos correios on line

Mensagem por JoséQuintas »

Sobre o XML de resposta... é que fiz um equilíbrio entre XML normal e poder visualizar na página do site.
Uma função pra ajudar a pegar o conteúdo seria esta:

Código: Selecionar todos

cUf := XmlNode(cXml,"uf")
cCidade := XmlNode(cXml,"cidade")
cEndereco := XmlNode(cXml,"bairro")
cLogradouro := XmlNode(cXml,"logradouro")

FUNCTION XmlNode(cTexto,cTag)
   LOCAL cTagStart, cTagEnd, nPosStart, nPosEnd, cConteudo
   cTagStart := "<" + cTag + ">"
   cTagEnd := "</" + cTag + ">"
  nPosStart := At(cTagStart,cTexto)
  nPosEnd := At(cTagEnd,cTexto)
  IF nStart != 0 .AND. nEnd != 0
       nPosStart := nStart + Len(cTagStart)
      nPosEnd -= 1
      cConteudo := Substr(cTexto,nPosStart,nPosEnd-nPosStart+1)
ELSE
   cConteudo := ""
ENDIF
RETURN cConteudo
Obs. Criei durante a digitação aqui no fórum, então pode precisar de ajuste.
Pra ler XML de NFE precisaria de mais ajustes.
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/
Kiko Fernandes
Usuário Nível 3
Usuário Nível 3
Mensagens: 213
Registrado em: 24 Out 2008 22:41
Localização: Foz do Iguaçu

CEP dos correios on line

Mensagem por Kiko Fernandes »

José, boa tarde!
Estive olhando esta opção e o link que vc disponibilizou e fiquei com algumas dúvidas.

Posso colocar este recurso como uma opção no meu sistema e distribuir aos clientes?
Poderá gerar alguma complicação a teu link esta opção?
Teria algum outro cuidado que vc recomendaria além da consulta abusiva?

Obrigado!
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

CEP dos correios on line

Mensagem por JoséQuintas »

É só isso.
O limite é zerado a cada hora, então no uso normal vai tranquilo.
E se abusar, a resposta vai ser da base de dados, e não dos correios.
Pra determinados CEPs nem faz diferença.

Aproveitei pra dar uma olhada nas quantidades de consulta:
5 que mais consultaram no dia: 468, 206, 18, 8, 6.
5 que mais consultaram no mês: 3.660, 932, 66, 64, 48

O mesmo IP continua sendo o top, consultando mais que todos os outros juntos, mas bem menos do que no início.
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