Uma forma simples de obter endereço pelo CEP
Você ainda pede o endereço completo nos seus formulários de cadastro?
Pois é. Muita gente ainda faz isso.
Mas existem algumas formas de obter o endereço completo, pedindo apenas o CEP para o usuário.
Vamos lá. Você pode comprar o banco de dados dos correios e manter sua base sempre atualizada (mais informações através do site dos Correios). É muito simples. Compre, baixe, suba para sua base de dados e mantenha sempre atualizado.
Compre?
Pois é amigos, agora só comprando. Antes eles forneciam gratuitamente.
Agora, se você quer algo livre e sempre atualizado, tenho outra sugestão. Aliás, mais simples do que comprar, baixar, subir na sua base de dados e implementar uma rotina para pesquisar e fazer atualizações esporádicas. Se bem que esta seria a forma mais confiável. Mas, eu uso um serviço totalmente gratuíto que me retorna os dados que eu preciso, e sempre atualizados: CEP Livre. Mas, atenção: acesse a primeira página do serviço e leia. Ninguém vive de luz.
Vamos ao que realmente interessa.
Utilizando a url: http://ceplivre.pc2consultoria.com/index.php?module=cep&cep=11060-000&formato=xml podemos obter os dados de qualquer cep existente. Experimente (altere o número do CEP).
Vou escrever algo simples, e bacana, para que todos possam implementar em seus sistemas.
Primeiro o html, onde vamos colocar o formulário pedindo o cep :
<form id="form1" runat="server"> <div> <table> <tr> <td>CEP</td> <td><asp:textbox ID="txtCEP" runat="server" MaxLength="9" AutoPostBack="True" OnTextChanged="txtCEP_TextChanged" Width="80px"></asp:textbox> nnnnn-nnn </td> </tr> <tr> <td>Logradouro</td> <td><asp:textbox ID="txtLogradouro" runat="server" MaxLength="60" Width="500px"></asp:textbox></td> </tr> <tr> <td>Município</td> <td><asp:textbox ID="txtCidade" runat="server" MaxLength="50" Width="200px"></asp:textbox></td> </tr> <tr> <td>Bairro</td> <td><asp:textbox ID="txtBairro" runat="server" MaxLength="50" Width="200px"></asp:textbox></td> </tr> <tr> <td>UF</td> <td><asp:textbox ID="txtUF" runat="server" MaxLength="2" Width="50px"></asp:textbox></td> </tr> </table> </div> </form>
Em seguida não esqueça de implementar o código para o evento TextChanged do TextBox do CEP:
protected void txtCEP_TextChanged(object sender, EventArgs e)
{
txtLogradouro.Text = "";
txtBairro.Text = "";
txtCidade.Text = "";
txtUF.Text = "";
logradouro Logradouro = EnderecoPeloCEP(txtCEP.Text);
if (Logradouro.resultado == 1)
{
txtLogradouro.Text = Logradouro.logradoudo;
txtBairro.Text = Logradouro.bairro;
txtCidade.Text = Logradouro.cidade;
txtUF.Text = Logradouro.uf;
}
else
{
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "Erro", string.Format("alert('{0}');", Logradouro.mensagem), true);
}
}
Agora vem a parte bacana. A classe que vai guardar os dados e o método que trará os dados do serviço:
public sealed class logradouro
{
public string cep { get; set; }
public string logradoudo { get; set; }
public string bairro { get; set; }
public string cidade { get; set; }
public string uf { get; set; }
public int resultado { get; set; }
public string mensagem { get; set; }
public logradouro()
{
cep = string.Empty;
logradoudo = string.Empty;
bairro = string.Empty;
cidade = string.Empty;
uf = string.Empty;
resultado = 0;
}
}
public logradouro EnderecoPeloCEP(String cep)
{
logradouro retorno = new logradouro();
string url = string.Format(
@"http://ceplivre.pc2consultoria.com/index.php?module=cep&cep={0}&formato=xml",
cep);
System.Xml.XmlTextReader lerXML = new System.Xml.XmlTextReader(url);
lerXML.MoveToContent();
do
{
if (lerXML.NodeType == System.Xml.XmlNodeType.Element)
{
lerXML.Read();
switch (lerXML.Name)
{
case "tipo_logradouro":
retorno.logradoudo = lerXML.Value + " ";
break;
case "logradouro":
retorno.logradoudo += lerXML.Value;
break;
case "bairro":
retorno.bairro = lerXML.Value;
break;
case "cidade":
retorno.cidade = lerXML.Value;
break;
case "estado_sigla":
retorno.uf = lerXML.Value;
break;
case "sucesso":
retorno.resultado = int.Parse(lerXML.Value);
switch (retorno.resultado)
{
case 1:
retorno.mensagem = "Cep encontrado!";
break;
case 0:
retorno.mensagem = "Não foi encontrado um resultado";
break;
}
break;
}
}
} while (lerXML.Read());
return retorno;
}
Encontrei esta solução no Devmedia, no seguinte post “CEP LIVRE – CONSULTA URL GRÁTIS COM RETORNO EM XML“. Me ajudou muito.
Espero que ajude a todos, bom proveito…
Não esta atualizado
Como assim? Funciona.
Qual o problema você está enfrentando?