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."); } }
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); }