Uma forma simples de obter endereço pelo CEP

Titulo Cep Livre 300x204 Uma forma simples de obter endereço pelo CEPVocê 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.Estrutura Cep Livre 150x150 Uma forma simples de obter endereço pelo CEP

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…

 

2 Comments

Deixe uma resposta

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

SEO Powered by Platinum SEO from Techblissonline