Exemplo n.º 1
0
        private CepResult ParseSuccessXML(string xml)
        {
            CepResult _CEP = new CepResult();

            try
            {
                XDocument result = XDocument.Parse(xml);

                _CEP.Cep      = result.Descendants("cep").First().Value;
                _CEP.UF       = result.Descendants("uf").First().Value;
                _CEP.Cidade   = result.Descendants("cidade").First().Value;
                _CEP.Bairro   = result.Descendants("bairro").First().Value;
                _CEP.Endereco = result.Descendants("end").First().Value;
            }
            catch (Exception)
            {
                _CEP.Mensagem = "Não foi possível interpretar XML de resposta!";
            }


            return(_CEP);
        }
Exemplo n.º 2
0
        public CepResult ConsultaCep(string cep)
        {
            CepResult _result = new CepResult();

            if (string.IsNullOrWhiteSpace(cep))
            {
                _result.Mensagem = "Cep não informado";
                return(_result);
            }

            if (cep.Length < 8)
            {
                _result.Mensagem = "Cep deve conter 8 caracteres";
                return(_result);
            }

            if (cep.Length < 8)
            {
                _result.Mensagem = "Cep possui mais de 8 caracteres";
                return(_result);
            }

            try
            {
                WebRequest request = WebRequest.Create(url);
                request.Method      = "POST";
                request.ContentType = "text/xml;charset=UTF-8";

                string xml = $"<?xml version = '1.0' ?>\n<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/' xmlns:cli='http://cliente.bean.master.sigep.bsb.correios.com.br/'>\n<soapenv:Header />\n<soapenv:Body>\n<cli:consultaCEP>\n<cep>${cep}</cep>\n</cli:consultaCEP>\n</soapenv:Body>\n</soapenv:Envelope>";

                xml = xml.Replace("'", "\"");

                byte[] bytes;
                bytes = System.Text.Encoding.ASCII.GetBytes(xml);

                request.ContentLength = bytes.Length;

                Stream requestStream = request.GetRequestStream();
                requestStream.Write(bytes, 0, bytes.Length);
                requestStream.Close();
                HttpWebResponse response;
                response = (HttpWebResponse)request.GetResponse();

                if (response.StatusCode == HttpStatusCode.OK)
                {
                    Stream responseStream = response.GetResponseStream();
                    string responseStr    = new StreamReader(responseStream).ReadToEnd();

                    _result = ParseSuccessXML(responseStr);
                }
                else
                {
                    _result.Mensagem = $"O seguinte erro ocorreu : {response.StatusCode}";
                }
            }
            catch (WebException e)
            {
                _result.Mensagem = $"O seguinte erro ocorreu : ({e.Status}) {e.Message} ";
            }
            catch (Exception ex)
            {
                _result.Mensagem = ex.Message;
            }

            return(_result);
        }