Página 2 de 3

CEP dos correios on line

Enviado: 23 Ago 2012 10:50
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

CEP dos correios on line

Enviado: 23 Ago 2012 11:58
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.

CEP dos correios on line

Enviado: 24 Ago 2012 08:48
por Jairo Maia
Olá José,

No meu caso mantenho acentuação, mas Meus Parabéns Também, ficou Show de Bola.

CEP dos correios on line

Enviado: 03 Out 2012 11:11
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.

CEP dos correios on line

Enviado: 04 Out 2012 11:04
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

CEP dos correios on line

Enviado: 04 Out 2012 14:28
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.

CEP dos correios on line

Enviado: 04 Out 2012 19:54
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.

CEP dos correios on line

Enviado: 04 Out 2012 21:18
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

CEP dos correios on line

Enviado: 04 Out 2012 22:49
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

CEP dos correios on line

Enviado: 05 Out 2012 07:53
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.

CEP dos correios on line

Enviado: 05 Out 2012 16:41
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)

CEP dos correios on line

Enviado: 17 Nov 2012 22:34
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).

CEP dos correios on line

Enviado: 17 Nov 2012 22:55
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.

CEP dos correios on line

Enviado: 08 Mai 2013 14:49
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!

CEP dos correios on line

Enviado: 08 Mai 2013 19:54
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.