Busca de Endereço pelo CEP

Este post foi baseado no artigo do blog do Prof Anderson,

 http://profanderson.blog.etecarmine.com.br/busca-automatica-de-cep-em-c-windows-forms/

O objetivo é obter dados do endereço através do código do CEP. A pesquisa é realizada no site https://viacep.com.br/ws/12951231/json/, que retorna os dados de logradouro, complemento, bairro, cidade e uf do CEP fornecido.

Veja o código abaixo, que pode ser colocado em um botão de pesquisa, com o devido cuidado para as bibliotecas que serão solicitadas para incorporação ao seu projeto:

 

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++;
   }
  }
 }
}