LAYERDEV

 Busca Online:
 

Seja bem vindo(a) Visitante, voc no est logado deseja logar
na comunidade ASPNETi.COM e participar de servios e promoes ? clique aqui.

Consultando CEP via WebService



Data Publicação: 15/6/2010 21:41:56
Total de visualizações: 1388

comente
Diminuir o tamanho das letras Aumentar o tamanho das letras



 Olá Internautas, gostaria de mostrar hoje como utilizar webservice para consultar CEP pelo seu sistema, site ou aplicativo móvel sem criar o "ADD References" da ferramenta Visual Studio .NET.
 
Referências:
Linguagem: C#
Ferramenta Visual Studio .NET 2008, 2010
Tecnologia: WebService

 Continuando a explicação, existe um endereço na internet que você passa o cep e retorna um xml como valor de consulta. O que fiz foi, pegar esse endereço e construir um webservice relacionado para uso de qualquer tipo de software que tenha acesso ao endereço.
 
 É lógico que, em caso de problema o retorno será NULL de acordo com o WebService. Você pode programar isso facilmente. Não vou utilizar o Add References da ferramenta, vou usar um outro componente para pegar a URL e consumir o seu retorno.

 É preciso dizer também que, a segurança no uso de webservice é imprescindível e por isso, usei uma maneira simples de se verificar a segurança no momento do uso, ou seja, para quem vai utilizar o serviço.
 
 A primeira coisa foi definir a URL dentro do arquivo de configuração da aplicação, dentro do Web.config. Code 1.1

//web.config
<appSettings>
 <add key="Chave" value="8cbf1013-d6fd-4b68-8208-c29734fda911"/>
 <add key="Url" value="http://cep.republicavirtual.com.br/web_cep.php?cep={0}"/>
</appSettings>
Referência: Code 1.1
 
 Note que coloquei uma Chave e uma Url como key no arquivo. Como mensionado anteriormente, vou colocar uma mínima segurança para utilização do WebService e para isso vou usar essa Chave.
 
 O segundo passo foi criar a classe de webservice e fazer a pesquisa usando a Url do arquivo. Code 1.2

//classe .cs do webservice
using System;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Linq;
using System.Net;
using System.Data;
using System.Xml;
using System.Configuration;

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
// [System.Web.Script.Services.ScriptService]
public class ConsultaCEP : System.Web.Services.WebService
{
    public ConsultaCEP(){}

    public AuthHeader sHeader;

    private bool AutenticarChave()
    {
        if (sHeader != null && sHeader.AccessKey.Equals(ConfigurationManager.AppSettings["Chave"]))
            return true;
        return false;
    }

    /*
     <?xml version="1.0" encoding="iso-8859-1" ?>
        <webservicecep>
        <resultado>1</resultado>
        <resultado_txt>sucesso - cep completo</resultado_txt>
        <uf>DF</uf>
        <cidade>Taguatinga</cidade>
        <bairro>Sul (Águas Claras)</bairro>
        <tipo_logradouro>Quadra</tipo_logradouro>
        <logradouro>Quadra 210</logradouro>
      </webservicecep>
     */
    [SoapHeader("sHeader")]
    [WebMethod]
    public string BuscarCEP(string cep)
    {
        if (!AutenticarChave())
            throw new Exception("Autenticação inválida");

        string url = String.Format(ConfigurationManager.AppSettings["Url"],cep);

        WebClient client = new WebClient();
        client.Credentials =  new NetworkCredential();

        string returnURL = client.DownloadString(url);

        DataSet dsXML = new DataSet();
        XmlDocument xml = new XmlDocument();
        xml.LoadXml(returnURL);
        dsXML.ReadXml(new XmlNodeReader(xml));

        if (dsXML.Tables.Count > 0 && dsXML.Tables[0].Rows.Count > 0 && dsXML.Tables[0].Rows[0]["resultado"].ToString().Equals("1"))
        {
            return returnURL;
        }
        else
        {
            //Consultar Na ATP
            return "";
        }
    }
}

public class AuthHeader : SoapHeader
{
    public string AccessKey;
}
Referência: Code 1.2

 Os três primeiros métodos dentro da classe é referente a parte de autenticação. O primeiro método é um construtor da classe chamada ConsultCEP(). Code 1.3
 
 public ConsultaCEP(){}

    public AuthHeader sHeader;

    private bool AutenticarChave()
    {
        if (sHeader != null && sHeader.AccessKey.Equals(ConfigurationManager.AppSettings["Chave"]))
            return true;
        return false;
    }
 Referência: Code 1.3
 
 O próximo método, "public string BuscarCEP(string cep)", é público e recebe uma string com o número do CEP. Dentro dele pego a url colocada no arquivo de configuração e depois utilizo um WebClient para consultar e fazer download do conteúdo. Verifico se os dados chegaram e retorno a string. Code 1.2
 
 No final dessa classe, criei outra; isto mesmo; uma classe dentro da outra. A assinatura da classe é um pouco diferente das outras. Usei SoapHeader e declarei uma variável pública dentro dela chamada AccessKey.
 
public class AuthHeader : SoapHeader
{
    public string AccessKey;
}
Referência: Code 1.4

 Funcionou muito bem a solução. Em um outro artigo mostro como consumir esse webservice. Espero ter ajudado e fico por aqui.



Total de visualizações: 1388
voltar   comente  subir


Comentários:


Comente (dê sua opinião): VOCÊ PRECISA LOGAR

Comentário:
Código Imagem:  (digite o código da imagem respeitando maiúsculo e minúsculo)

Favor digitar o código da imagem para cadastramento.

 

Outros Artigos do Autor

Nova forma de utilizar cache utilizando Visual Studio.NET 2005
2 Eventos, 1 dia: Mix On UniEURO
Sistema em ASP 3.0 utilizando 3 camadas – Parte 3
VSS Versionador - Resumão
Validator no VS 2005
XmlDataSource
UPLOAD – Enviando imagem pela Internet
Virtual Earth - Segundo Passo
GridView Parte III
Mensagem JavaScript com .NET
Windows Phone 7 com Microsoft TellMe
Aspirador de pó inteligente
ASP.NET 4.0 and Visual Studio 2010 Web Development Beta 2 Overview
Prepare o Sql Server para o VS 2005
Gravando Erros com Exception no arquivo de log - Parte II
Promoção ASPNETi.COM versus Autor - e-Books grátis hoje e amanhã
IsAlphaNumeric
Sistema de Login em ASP – Parte 10
Criando Help com Visual Studio.NET
Teclas de atalho - Visual Studio .NET 2005
Deixe a sua webcan funcionar como instrumento de segurança
VSTS 2008
Usando o Translator da Microsoft
Resources e Internacionalização usando Visual Studio.NET 2005 (Parte II)
Código fonte do livro DESENVOLVENDO WEBSERVICES
Orientação a Objetos - Microsoft PetShop 3.0
Exemplos de Queries Linq
Artigo Criando RSS Xml para o Seu Próprio Site
Evento BrasilDotNet 2008
Visual Source Safe ? Série 2
Focus()
Ajax parte II
Vídeo sobre banco de dados
Controle de Peso pelo Celular Publicado no CodePlex
Sistema de Login em ASP – Parte VI
Sobre o Autor
  [sumir] [aparecer]
 
Mauricio Junior Maurício Júnior
Formado pela Faculdade Anhanguera, Especialista pela FGV (Fundação Getúlio Vargas), Pós-Graduação em Docência Superior e cursando Mestrado na UNB Engenharia Elétrica; .
Tenho 27 anos e possuo sete livros publicados pela editora Ciência Moderna no ano de 2009. Sou Certificado Microsoft MCP, MCAD e MVP, faço parte da comunidade ASPNETI.COM, onde publico artigos, vídeos, ebooks e livros Publico artigos, vídeos e podcast em outras comunidades. Trabalho como Analista de Sistemas / Desenvolvedor na empresa ATP S/A. Blog:  blog.mauriciojunior.orgSite pessoal  www.mauriciojunior.org

Informaes Online
Usurios Online: 1024
Artigos:  750
Vdeos:  61
PodCast's:  45
Frum:  3128
Empregos:  1385
Usurios Cadastrados: 6166
Publicidade
LAYERDEV




Vdeos Publicados
 

Duas dicas de internet - Google RealTime e OpenDNS

Desconfie sempre da internet e emails

Microsoft Office online no Safari funcionando

Inovação Visual Studio .NET 2010 - parte 4

Office Live online

TAB TAB na ferramenta Visual Studio .NET

Apresentação do IMC - Sistema de Controle de Peso Mobile

Inovação Visual Studio .NET 2010 - parte 3

Inovação Visual Studio .NET 2010 - parte 1

Download de vídeos com o Safari

Criando Chart - Novo componente integrado com o Visual Studio.NET 2010

Serviços: SAC e SMS integrado

Café com TI - Info sobre o Visual Studio.NET 2010 - WebConfig

Café com TI - Info sobre o Visual Studio.NET 2010

Café com TI - Vírus se passando por Correios

Café com TI - Novo jeito de mandar e-mail com vírus

Café com TI - Formatando todo tipo de String

Resolvido erro do Banco do Brasil no browser

Erro no site do Banco do Brasil com o Safari

Duas dicas do Snow Leopard

Incompatibilidade no Snow Leopard

E-mail com vírus, veja os detalhes

Café com TI - Continuando a configuração de Themes no site

Café com Ti - Banner Rotativo

Café com TI - Evento Eco Brasília

Café com TI - Themes dentro do ASPNETi.COM

Café com TI - Trabalhando com o iCal no Macbook

Café com TI - Deixando o rodapé do seu site fixo

Café com TI - Windows 7 sendo utilizado sem qualquer incompatibilidade

Café com Ti - ASP.NET - Explicando o componente ModalDialogExtender do Ajax Toolkit

Café com TI - Indexação de URL com ASP.NET

Café com TI - Configurando Mail para sua conta no HotMail
Enquete ASPNETi.COM
 Os podcasts tem sido proveitoso pra você?

Favor logar para votar
 
Publicidade Vertical
NETITC