none
Buscar CEP a partir do endereço dado

    Question

  • Pessoal,

    Estou desenvolvendo uma aplicação na qual preciso que exista a funcionalidade que, através do endereço, me retorne o CEP correspondente.

    Alguém já fez alguma coisa assim ou sabe como fazê-la?

    O sistema já faz o contrário: busca o endereço através do CEP. Mas há situações em que preciso que funcione da primeira maneira.


    Não preciso muito de código, pois já programo em C# fluentemente. O problema é saber de onde buscar essa informação.

    Agradeço a quem se inrteressar em me ajudar.
    Wednesday, December 10, 2008 12:29 AM

Answers

  • Olá Charles,

    Entendo o que você pretende fazer.

    Recomendo que você dê uma olhada no seguinte link:

        http://www.republicavirtual.com.br/cep/
        
    Nesse site você pode baixar uma base de dados de CEP e dessa forma customizar o sistema de busca, retornando o CEP através do endereço.

    Porém a base de dados não é completa.

    Para obter uma base de dados mais atualizada você pode comprar o CD com a base de dados de CEP, o chamado Guia Postal Brasileiro eletrônico, em qualquer agência dos correios ou pela loja eletrônica deles.

    Recomendo entrar em contato também com os correios para obter mais detalhes sobre a utilização de webservices e se possuem algum que realize a busca de CEP por endereço.

    Entrei em contato com eles, mas estou aguardando a resposta.

    Qualquer novidade postarei aqui.

    Caso tenha mais dúvida veja a seguinte thread e os links postados pelo Caio Proiete:

        "CEP em loja virtual"
        http://forums.microsoft.com/msdn-br/showpost.aspx?postid=3938045&siteid=21

    []'s
    Friday, December 12, 2008 3:43 PM

All replies

  • Bom dia, Charles.

     

    Tente entrar em contato com o pessoal dos correios e exponha a situação. Pode ser que eles tenham algum WebService que faça o que deseja.

     

    Abraços e boa sorte.

     

    Wednesday, December 10, 2008 10:20 AM
  • Olá Charles,

    Dê uma olhada nos seguintes sites:

        "Web Service de consultas de CEP"
        http://www.buscarcep.com.br/

        "Correios - DNE"
        http://www.correios.com.br/cep/dne.cfm

    []'s
    Thursday, December 11, 2008 5:01 PM
  • Rafael,

    No primeiro busco endereço a partir do CEP e isso eu já tenho.

    No segundo, dos Correios, é para embutir numa web page, e a minha aplicação é desktop.

    Eu preciso que o usuário informe o endereço e mande buscar o cep. Não sei se tem alguma maneira de buscar apenas o CEP e trazazer para uma textbox, por exemplo, utilizando essa aplicação dos correios.

    Obrigado pela atenção!
    Friday, December 12, 2008 10:51 AM
  • Olá Charles,

    Entendo o que você pretende fazer.

    Recomendo que você dê uma olhada no seguinte link:

        http://www.republicavirtual.com.br/cep/
        
    Nesse site você pode baixar uma base de dados de CEP e dessa forma customizar o sistema de busca, retornando o CEP através do endereço.

    Porém a base de dados não é completa.

    Para obter uma base de dados mais atualizada você pode comprar o CD com a base de dados de CEP, o chamado Guia Postal Brasileiro eletrônico, em qualquer agência dos correios ou pela loja eletrônica deles.

    Recomendo entrar em contato também com os correios para obter mais detalhes sobre a utilização de webservices e se possuem algum que realize a busca de CEP por endereço.

    Entrei em contato com eles, mas estou aguardando a resposta.

    Qualquer novidade postarei aqui.

    Caso tenha mais dúvida veja a seguinte thread e os links postados pelo Caio Proiete:

        "CEP em loja virtual"
        http://forums.microsoft.com/msdn-br/showpost.aspx?postid=3938045&siteid=21

    []'s
    Friday, December 12, 2008 3:43 PM

  • Abaixo um código Gerado para ser utilizado como WebService.
    
    Consulta as informações direto da página dos correios passando o tipo de parametro que você necessita.
    
    [WebMethod(EnableSession = true)]
            [ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
            public string ConsultaCEPCorreios(string searchTerm)
            {
                CookieContainer cookieContainer = new CookieContainer();
    
                // Limpando o html para impedir url inject
                SqlParameter filtrolike = new SqlParameter("param_like", searchTerm.Replace(".", ""));
    
                List<String> Itens = new List<String>();
    
                string JsonRetorno = "";
                String Retorno = "";
    
                string ItemTemplate = @"{ 
                                            ""CEP"" : ""@CEP"", 
                                            ""Logradouro"" : ""@LOGRADOURO"", 
                                            ""Bairro"" : ""@BAIRRO"", 
                                            ""Municipio"" : ""@NOMEMUNICIPIO"",
                                            ""CodMunicipio"" : ""@MUNICIPIOCOD"", 
                                            ""CodIbge"" : ""@CODIBGE"",
                                            ""Estado"" : ""@NOMEESTADO"", 
                                            ""CodEstado"" : ""@UFCOD"",
                                            ""Pais"" : ""@NOMEPAIS"" ,
                                            ""CodPais"" : ""@PAISCOD""
                                        }";
    
                String parametros = "relaxation=" + filtrolike.Value.ToString() + "&TipoCep=ALL&semelhante=N&cfm=1&Metodo=listaLogradouro&TipoConsulta=relaxation&StartRow=1&EndRow=100";
    
                HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create("http://www.buscacep.correios.com.br/servicos/dnec/consultaEnderecoAction.do");
                httpWebRequest.CookieContainer = cookieContainer;
                httpWebRequest.ContentType = "application/x-www-form-urlencoded";
                httpWebRequest.Method = "POST";
                httpWebRequest.Timeout = 20000;
                httpWebRequest.AllowAutoRedirect = false;
                httpWebRequest.ContentLength = parametros.Length;
    
                try
                {
                    StreamWriter stParametros = new StreamWriter(httpWebRequest.GetRequestStream(), Encoding.GetEncoding("ISO-8859-1"));
                    stParametros.Write(parametros);
                    stParametros.Close();
                    HttpWebResponse response = (HttpWebResponse)httpWebRequest.GetResponse();
                    if (response.StatusCode == HttpStatusCode.OK)
                    {
                        StreamReader stHtml = new StreamReader(httpWebRequest.GetResponse().GetResponseStream(), Encoding.GetEncoding("ISO-8859-1"));
                        Retorno = stHtml.ReadToEnd();
                        stHtml.Close();
                    }
                }
                catch { }
    
                List<LogradouroFiltro> Resultados = ListaLogradouros(Retorno);
                int CodUF = 0;
                int CodPais = 0;
                int CodMunicipio = 0;
                int CodIBGE = 0;
    
                if (Resultados.Count() > 0)
                {
                    string SiglaUf = Resultados.FirstOrDefault().Estado;
                    string NomeCidade = Resultados.FirstOrDefault().Municipio;
    
                    if (!string.IsNullOrEmpty(SiglaUf))
                    {
                        using (RepositorioGenerico repo = new RepositorioGenerico(Globais.Contexto))
                        {
                            Estado est = repo.FindOne<Estado>(x => x.UF.ToUpper().Trim() == SiglaUf.ToUpper().Trim());
                            if (est != null)
                            {
                                CodUF = est.Id;
                                CodPais = est.PaisId;
                            }
    
                            Municipio mun = repo.FindOne<Municipio>(x => x.Descricao.ToUpper().Trim() == NomeCidade.ToUpper().Trim() && x.EstadoId == CodUF);
                            if (mun != null)
                            {
                                CodMunicipio = mun.Id;
                                CodIBGE = mun.CodIBGE;
                            }
                        }
                    }
                }
    
    
                foreach (LogradouroFiltro Endereco in Resultados)
                {
                    String tmp = ItemTemplate
                        .Replace("@CEP", Endereco.CEP)
                        .Replace("@LOGRADOURO", Endereco.Logradouro)
                        .Replace("@BAIRRO", Endereco.Bairro)
                        .Replace("@NOMEMUNICIPIO", Endereco.Municipio)
                        .Replace("@MUNICIPIOCOD", CodMunicipio.ToString())
                        .Replace("@CODIBGE", CodIBGE.ToString())
                        .Replace("@NOMEESTADO", Endereco.Estado)
                        .Replace("@UFCOD", CodUF.ToString())
                        .Replace("@NOMEPAIS", Endereco.Pais)
                        .Replace("@PAISCOD", CodPais.ToString());
    
                    Itens.Add(tmp);
                }
    
                foreach (String str in Itens)
                {
                    if (!String.IsNullOrEmpty(JsonRetorno))
                        JsonRetorno += ",";
                    JsonRetorno += str;
                }
                JsonRetorno = @"{ ""Resultados"": [" + JsonRetorno + "]}";
    
                Context.Response.ContentType = "application/json; charset=iso-8859-1";
                Context.Response.Output.Write(JsonRetorno);
                Context.Response.End();
                return "";
            }

    Tuesday, July 29, 2014 5:36 PM