André Alves de Lima

Talking about Software Development and more…

Como consultar CEP no .NET?

Uns tempos atrás eu escrevi um artigo mostrando como acessar os web services dos Correios com C# e VB.NET. De lá para cá, eu tenho visto vários vídeos sendo publicados mostrando especificamente a parte de consulta de CEPs. Porém, eu não consegui encontrar um vídeo sobre esse assunto que fosse extremamente sucinto. Por isso, me lancei o desafio de gravar o vídeo mais claro, simples, objetivo e curto mostrando como consultar CEP no .NET. Aqui vai o resultado:

Adicionando a referência ao web service dos Correios

A primeira coisa que temos que fazer para consultarmos CEPs com os web services dos Correios é adicionarmos a referência para o web service. Isso é super tranquilo de ser feito. No Visual Studio, clicamos com o botão direito em “References” e escolhemos a opção “Add Service Reference“:

Na janela que se abre, temos que informar a URL do serviço, clicar em “Go“, dar um nome para o serviço (no caso eu escolhi o nome “WSCorreios“) e clicar em “OK” para gerar as classes de acesso. A URL do web service que implementa a consulta de CEPs dos Correios é a seguinte:

https://apps.correios.com.br/SigepMasterJPA/AtendeClienteService/AtendeCliente?wsdl

Consultando CEPs

Para demonstrar a consulta de CEPs, desenhei uma tela bem simples com os campos relacionados ao endereço:

A chamada para o web service é muito tranquila a partir do Visual Studio. Nós só temos que instanciar o serviço (o qual nós adicionamos a referência no passo anterior) e chamar o método desejado (nesse caso, “consultaCEP“). O método de consulta de CEPs só recebe um parâmetro, que é o próprio CEP no formato em string. O retorno do método será uma instância da classe de endereço dos Correios, que conterá todas as informações do endereço consultado (bairro, cidade, etc).

Veja como é que fica o código do clique do botão:

        // C#
        private void btBuscar_Click(object sender, EventArgs e)
        {
            using (var ws = new WSCorreios.AtendeClienteClient())
            {
                 var resultado = ws.consultaCEP(tbCEP.Text);
                 tbEndereco.Text = resultado.end;
                 tbComplemento.Text = resultado.complemento;
                 tbComplemento2.Text = resultado.complemento2;
                 tbCidade.Text = resultado.cidade;
                 tbBairro.Text = resultado.bairro;
                 tbEstado.Text = resultado.uf;
            }
        }
    ' VB.NET
    Private Sub BtBuscar_Click(sender As Object, e As EventArgs) Handles BtBuscar.Click
        Using WS = New WSCorreios.AtendeClienteClient()
            Dim Resultado = WS.consultaCEP(TbCEP.Text)
            TbEndereco.Text = Resultado.[end]
            TbComplemento.Text = Resultado.complemento
            TbComplemento2.Text = Resultado.complemento2
            TbCidade.Text = Resultado.cidade
            TbBairro.Text = Resultado.bairro
            TbEstado.Text = Resultado.uf
        End Using
    End Sub

Tratando possíveis erros

Se tentarmos passar algum conteúdo inválido para o web service, ele não retornará um erro, mas sim, lançará uma exceção. Dessa forma, para tratarmos os erros retornados pelos serviços dos Correios, temos que colocar o nosso código em um bloco “try/catch“:

        // C#
        private void btBuscar_Click(object sender, EventArgs e)
        {
            using (var ws = new WSCorreios.AtendeClienteClient())
            {
                try
                {
                    var resultado = ws.consultaCEP(tbCEP.Text);
                    tbEndereco.Text = resultado.end;
                    tbComplemento.Text = resultado.complemento;
                    tbComplemento2.Text = resultado.complemento2;
                    tbCidade.Text = resultado.cidade;
                    tbBairro.Text = resultado.bairro;
                    tbEstado.Text = resultado.uf;
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }
    ' VB.NET
    Private Sub BtBuscar_Click(sender As Object, e As EventArgs) Handles BtBuscar.Click
        Using WS = New WSCorreios.AtendeClienteClient()
            Try
                Dim Resultado = WS.consultaCEP(TbCEP.Text)
                TbEndereco.Text = Resultado.[end]
                TbComplemento.Text = Resultado.complemento
                TbComplemento2.Text = Resultado.complemento2
                TbCidade.Text = Resultado.cidade
                TbBairro.Text = Resultado.bairro
                TbEstado.Text = Resultado.uf
            Catch Ex As Exception
                MessageBox.Show(Ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.[Error])
            End Try
        End Using
    End Sub

Baixe o projeto de exemplo

Para baixar o projeto de exemplo desse artigo, assine a minha newsletter. Ao fazer isso, além de ter acesso ao projeto, você receberá um e-mail toda semana sobre o artigo publicado e ficará sabendo também em primeira mão sobre o artigo da próxima semana, além de receber dicas “bônus” que eu só compartilho por e-mail. Inscreva-se utilizando o formulário no final do artigo.

Concluindo

Como você pode perceber nesse vídeo, a consulta de CEPs é extremamente fácil de ser implementada no .NET utilizando os web services dos Correios. Em pouco menos de 5 minutos você conferiu como adicionar a referência ao serviço e como consultar CEP no .NET. Além disso, vimos como podemos tratar as mensagens de erro utilizando um bloco “try/catch“. Essa mesma sistemática pode ser utilizada em todos os tipos de projetos, como Console Application, WPF, web e mobile.

E você? Já implementou consulta de CEPs na sua aplicação? Utilizou os web services dos Correios ou alguma outra sistemática? Fico aguardando as suas observações na caixa de comentários logo abaixo!

Até a próxima!

André Lima

Photo by Peter Shanks used under Creative Commons
https://pixabay.com/en/startup-start-up-notebooks-creative-593327/

Song Rocket Power Kevin MacLeod (incompetech.com)
Licensed under Creative Commons: By Attribution 3.0 License
http://creativecommons.org/licenses/by/3.0/

Newsletter do André Lima

* indicates required



Powered by MailChimp

20 thoughts on “Como consultar CEP no .NET?

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *