예제 #1
0
        public override ACBrEndereco[] BuscarPorCEP(string cep)
        {
            try
            {
                var request = (HttpWebRequest)WebRequest.Create(CORREIOS_URL);
                request.ProtocolVersion = HttpVersion.Version10;
                request.UserAgent       = "Mozilla/4.0 (compatible; Synapse)";
                request.Method          = "POST";

                var postData = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>" +
                               "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" " +
                               "xmlns:cli=\"http://cliente.bean.master.sigep.bsb.correios.com.br/\"> " +
                               " <soapenv:Header/>" +
                               " <soapenv:Body>" +
                               " <cli:consultaCEP>" +
                               " <cep>" + cep.OnlyNumbers() + "</cep>" +
                               " </cli:consultaCEP>" +
                               " </soapenv:Body>" +
                               " </soapenv:Envelope>";

                var byteArray  = Encoding.UTF8.GetBytes(postData);
                var dataStream = request.GetRequestStream();
                dataStream.Write(byteArray, 0, byteArray.Length);
                dataStream.Close();

                string retorno;

                // ReSharper disable once AssignNullToNotNullAttribute
                using (var stHtml = new StreamReader(request.GetResponse().GetResponseStream(), ACBrEncoding.ISO88591))
                    retorno = stHtml.ReadToEnd();

                var doc     = XDocument.Parse(retorno);
                var element = doc.ElementAnyNs("Envelope").ElementAnyNs("Body").ElementAnyNs("consultaCEPResponse").ElementAnyNs("return");

                var endereco = new ACBrEndereco();
                endereco.CEP         = element.Element("cep").GetValue <string>();
                endereco.Bairro      = element.Element("bairro").GetValue <string>();
                endereco.Municipio   = element.Element("cidade").GetValue <string>();
                endereco.Complemento = $"{element.Element("complemento").GetValue<string>()}{Environment.NewLine}{element.Element("complemento2").GetValue<string>()}";
                endereco.Logradouro  = element.Element("end").GetValue <string>();
                endereco.UF          = (ConsultaUF)Enum.Parse(typeof(ConsultaUF), element.Element("uf").GetValue <string>());

                endereco.TipoLogradouro = endereco.Logradouro.Split(' ')[0];
                endereco.Logradouro     = endereco.Logradouro.SafeReplace(endereco.TipoLogradouro, string.Empty);

                return(new[] { endereco });
            }
            catch (Exception exception)
            {
                throw new ACBrException(exception, "Erro ao consulta CEP.");
            }
        }
예제 #2
0
        private static ACBrEndereco ProcessElement(XElement element)
        {
            var endereco = new ACBrEndereco
            {
                CEP           = element.ElementAnyNs("cep").GetValue <string>(),
                Logradouro    = element.ElementAnyNs("logradouro").GetValue <string>(),
                Complemento   = element.ElementAnyNs("complemento").GetValue <string>(),
                Bairro        = element.ElementAnyNs("bairro").GetValue <string>(),
                Municipio     = element.ElementAnyNs("localidade").GetValue <string>(),
                UF            = element.ElementAnyNs("uf").GetValue <ConsultaUF>(),
                IBGEMunicipio = element.ElementAnyNs("ibge").GetValue <string>(),
            };

            endereco.TipoLogradouro = endereco.Logradouro.Split(' ')[0];
            endereco.Logradouro     = endereco.Logradouro.SafeReplace(endereco.TipoLogradouro, string.Empty);

            return(endereco);
        }