Projeto bem legal usando o service gratuita do Via CEP. O webservice retorna uma saída jSON o que facilita bastante a troca de dados com o servidor.
Aprenda também a utilizar o serviço do VIA CEP em suas páginas web usando jQuery. Aula disponível em Busca por CEP usando JQuery e jSon.
Veja um exemplo do resultado da pesquisa do CEP da Etec; 12951-231
https://viacep.com.br/ws/12951231/json/
Resultado:
Montando a interface do Projeto de Busca Automática de CEP
A interface ficará desta forma;
Ler jSON em C#
Em projetos C# normalmente utilizá-se da biblioteca jSON.NET para ler valores de uma saída jSON, porém, para este projeto em particular optei por não usá-la haja vista que a saída do web Service do Via CEP segue um único padrão de dados. Portanto, o código do botão Localizar ficou resumido;
IMPORTANTE! para este código foi necessário adicionar o using System.Text.RegularExpressions;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://viacep.com.br/ws/" + txtCep.Text + "/json/"); request.AllowAutoRedirect = false; HttpWebResponse ChecaServidor = (HttpWebResponse)request.GetResponse(); if (ChecaServidor.StatusCode != HttpStatusCode.OK) { MessageBox.Show("Servidor indisponível"); return; // Sai da rotina } using (Stream webStream = ChecaServidor.GetResponseStream()) { if (webStream != null) { using (StreamReader responseReader = new StreamReader(webStream)) { string response = responseReader.ReadToEnd(); response = Regex.Replace(response, "[{},]", string.Empty); response = response.Replace("\"", ""); String[] substrings = response.Split('\n'); int cont = 0; foreach (var substring in substrings) { if (cont == 1) { string[] valor = substring.Split(":".ToCharArray()); if (valor[0] == " erro") { MessageBox.Show("CEP não encontrado"); txtCep.Focus(); return; } } //Logradouro if (cont == 2) { string[] valor = substring.Split(":".ToCharArray()); txtLogradouro.Text = valor[1]; } //Complemento if (cont == 3) { string[] valor = substring.Split(":".ToCharArray()); txtComplemento.Text = valor[1]; } //Bairro if (cont == 4) { string[] valor = substring.Split(":".ToCharArray()); txtBairro.Text = valor[1]; } //Localidade (Cidade) if (cont == 5) { string[] valor = substring.Split(":".ToCharArray()); txtLocalidade.Text = valor[1]; } //Estado (UF) if (cont == 6) { string[] valor = substring.Split(":".ToCharArray()); txtUF.Text = valor[1]; } cont++; } } } }
Resultado (Clique na imagem para executar o GIF):
Download Gratuito – Busca Automática por CEP em C#
O download deste projeto simplista está disponível aqui.