Correios: Webservice para consulta de endereços a partir de um CEP

correiosOlá pessoal, tudo bom?

O Correio disponibiliza um Webservice gratuito, pelo menos por enquanto, para consulta de endereços a partir de um determinado CEP.

O acesso ao Webservice se dá a partir da URL: https://apps.correios.com.br/SigepMasterJPA/AtendeClienteService/AtendeCliente?wsdl

Para demonstrar seu funcionamento, segue um trecho de código de uma aplicação ASP.NET


<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="TesteWS.aspx.cs" Inherits="ConsultaCEP.TesteWS" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
  <title></title>
</head>
<body>
  <form id="form1" runat="server">
    <div>
    <h1>Teste WS dos Correios</h1><br />
    <asp:Panel ID="Panel1" runat="server" GroupingText="Busca Endereço">
      CEP:
      <asp:TextBox ID="txtCep" runat="server"></asp:TextBox>&amp;nbsp;<asp:Button ID="btnBuscarEndereco" runat="server" OnClick="btnBuscarEndereco_Click" Text="Buscar Endereço" />
      <br />
      <asp:Label ID="lblEndereco" runat="server"></asp:Label>
    </asp:Panel>
    </div>
  </form>
</body>
</html>

Resultado do código ASP.NET acima.

Resultado do código ASP.NET acima

Na sequencia, temos a implementação em C# para tratar o clique do botão Buscar Endereço


protected void btnBuscarEndereco_Click(object sender, EventArgs e)
{
  wsCorreio.AtendeClienteClient ws = new wsCorreio.AtendeClienteClient("AtendeClientePort"); //Verificar o nome do endpoint no arquivo Web.config
  var dados = ws.consultaCEP(txtCep.Text);
  if (dados != null)
  {
    lblEndereco.Text = string.Format(@"Endereço: {0}<br />
                       Complemento 1: {1}<br />
                       Complemento 2: {2}<br />
                       Bairro: {3}<br />
                       Cidade: {4}<br />
                       Estado: {5}",
                       dados.end,
                       dados.complemento,
                       dados.complemento2,
                       dados.bairro,
                       dados.cidade,
                       dados.uf);
  }
  else
    lblEndereco.Text = "CEP não encontrado.";
}

Dados do endereço de acordo com o CEP informado

Dados do endereço de acordo com o CEP informado

Dado o exemplo, agora basta adaptar para sua aplicação, seja ela ASP.NET, Windows Form, Windows Phone, etc.

Grande abraço,
Eduardo Henrique Rizo

[twitter-follow screen_name=’eduardorizo’ show_count=’yes’]

 

Marcado com: , , , , , , , , , , , , , ,
32 comentários sobre “Correios: Webservice para consulta de endereços a partir de um CEP
  1. Thiago Moises disse:

    Boa tarde,
    Primeiramente, parabens pelo seu trabalho. Estou começando a me aventurar no mundo do WP e estou exclarecendo muitas dúvidas aqui.
    Gostaria de saber se à alguma forma de recupegar a minha localização. Estou desenvolvendo um APP para meu TCC e preciso saber qual a localização do celular, mas não sei como fazer isso.
    Help me kkkkk
    Desde já agradeço.
    Att,

  2. Thiago Moises disse:

    Boa Tarde Eduardo,
    Cara.. Muito obrigado meeeeeesmo 🙂
    Era exatamente o que eu precisava.
    Abraços.. Vlw

  3. Mauricio disse:

    Boa tarde,

    Estou tentando usar esta solução mas quando tento adicionar o service referencia com este endereço retorna o seguinte erro:

    There was an error downloading ‘http://sigep.correios.com.br/sigep/update/AtendeClienteService.wsdl/_vti_bin/ListData.svc/$metadata’.
    The request failed with HTTP status 404: Not Found.

    Sabe o que pode ser?

    Obrigado.

  4. Roberto Junior disse:

    Eduardo, eu estou tentando usar esse webservice aqui mas ele está dando erro nessa linha:

    wsCorreios.AtendeClienteService ws = new wsCorreios.AtendeClienteService(“AtendeClientePort”); //Verificar o nome do endpoint no arquivo Web.config

    tive que trocar o AtendeClienteClient porque no novo link do webservice dos correios essa config nao aparece.
    Fiz errado?

  5. Roberto Junior disse:

    Tentei, e no try catch, ele da o seguinte erro ao digitar um cep invalido

    An exception of type ‘System.Web.Services.Protocols.SoapException’ occurred in System.Web.Services.dll but was not handled in user code

    Additional information: CEP NAO ENCONTRADO

    Ele retorna isso no VS, e não no webform como deveria ser

  6. Vitor disse:

    Muito bom, mas amigo, me explica o motivo de tu ter atribuído o conteúdo do webservice numa var chamado dados e depois pegar esses dados e atribuir a uma string, por que tu não usou o do próprio dados?

    • ehrizo disse:

      Olá Vitor, na verdade eu não atribui a uma string, mas sim usei o string.format para me ajudar na hora da exibição dos dados.
      Repare que no final do string.format eu uso o “dados” para poder ter acesso ao conteúdo.

      Abraços,
      Eduardo H. Rizo

  7. Patrick Brunoro disse:

    Boa tarde,

    Estou utilizando este modulo para geração de etiquetas, porem mesmo com dados certos, recebo uma exceção na autenticação. Informa que a autenticação falhou.

    Você já utilizou esse serviço?

    Obrigado

    • ehrizo disse:

      Olá Patrick, tudo bom?
      Esse webservice disponibiliza gratuitamente apenas o método consultaCEP, sendo que para usar os demais é necessário ser cliente dos Correios.
      Você está usando o método consultaCEP ou outro?

      At.,
      Eduardo H. Rizo

      • Patrick Brunoro disse:

        Olá ehrizo,

        Sou cliente dos correios e pretendo utilizar o serviço para gerar etiquetas para meus produtos.
        Utilizo o serviço AtendeClienteClient(), mas ao tentar acessar metodos que precisam de autenticação como getStatusCartaoPostagem(), buscaCliente() e verificaDisponibilidadeServico() recebo o erro “”A autenticacao de xxxxxxxx falhou!””

        Já utilizou algum deles?

        Abraço

      • ehrizo disse:

        Desculpe, nunca usei nenhum desses.
        Vocês já tentou o suporte dos correios?

        Abraços,
        Eduardo H. Rizo

  8. Marcelo Henrique disse:

    Para deixar claro! Os serviço é fornecido pelo Correio e precisa de um contrato que fornece usuário e senha para acesso. Segue DOCUMENTAÇÃO: http://www.corporativo.correios.com.br/encomendas/sigepweb/doc/Manual_de_Implementacao_do_Web_Service_SIGEPWEB_Logistica_Reversa.pdf

  9. Carlos Rocha disse:

    Estou tentando uma implementação em php via simplexml_load_file. Neste caso, é necessário passar variáveis na url. Estou fazendo assim:

    function encontraCep() {
    $cep = $_POST[“txtCep”];

    $url = “https://apps.correios.com.br/SigepMasterJPA/AtendeClienteService/AtendeCliente?wsdl&txtCep=”.$cep;
    $xml = simplexml_load_file($url);

    return $xml;

    }

    dados = encontraCep();

    um

    print “”;
    print_r($dados);
    print “”;

    Me retorna:

    SimpleXMLElement Object
    (
    [@attributes] => Array
    (
    [name] => AtendeClienteService
    [targetNamespace] => http://cliente.bean.master.sigep.bsb.correios.com.br/
    )

    )

    Onde estou errando?

  10. Patrick Brunoro disse:

    Bom dia,

    Estou recebendo este erro: “Não foi possível estabelecer uma relação de confiança para o canal protegido SSL/TLS com a autoridade ‘apphom.correios.com.br’.” ao tentar realizar a comunicação.
    Poderia me auxiliar na configuração para a comunicação?

  11. Bartolomeu Lemos disse:

    Como adiciono o endereço ( link) no web.config?

    Obrigado.

    • ehrizo disse:

      Olá, tudo bom?

      No projeto, clique com o botão direito em References e selecione a opção “Add Service Reference…”.

      []s
      Eduardo H. Rizo

  12. Ricardo melo disse:

    Alguém sabe informar se esta URL foi alterada? No módulo FK Customers tem esta mesma função mas a requisição não está funcionando. Ao colar a URL no navegador aparece a resposta: This XML file does not appear to have any style information associated with it. The document tree is shown below.

  13. Rafael Alves da Silva disse:

    Tem alguma consulta por endereço ?

    • ehrizo disse:

      Os correios oferecem uma vasta gama de opções de uso do seu webservices, no entanto, o único gratuito é o de consultar o CEP.

      Abraços,
      Eduardo H. Rizo

Deixe uma resposta

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

*