Curso Windows Phone – Classe WebClient para download de conteúdo da web no formato de dados binários ou strings

Olá a todos, tudo bom?

O Framework .Net disponibiliza uma classe chamada WebClient (Namespace System.Net) e, assim como ocorre em aplicativos para Desktop, Web, Windows Services, Console, etc, nos aplicativos para Windows Phone também é possível fazer uso dessa classe para realizar o download de conteúdos da web no formato de strings (geralmente conteúdo XML) ou mesmo dados binários, como por exemplo, arquivos de imagens.

No exemplo abaixo, estou utilizando a classe WebClient para fazer o download do texto XML correspondente ao RSS do meu Blog (https://ehrizo.wordpress.com/feed/). Repare que faço uso de dois eventos, sendo que o primeiro é invocado toda vez que a classe faz o download de uma parte do conteúdo, ou seja, fica sendo invocado continuamente até o final do download e o segundo, é invocado quando o download do conteúdo é concluído.

Veja o código abaixo em C#:


public partial class MainPage : PhoneApplicationPage
{
   WebClient wc = new WebClient();

   // Constructor
   public MainPage()
   {
      InitializeComponent();

      wc.DownloadProgressChanged +=
           new DownloadProgressChangedEventHandler(wc_DownloadProgressChanged);
      wc.DownloadStringCompleted +=
           new DownloadStringCompletedEventHandler(wc_DownloadStringCompleted);

      wc.DownloadStringAsync(new Uri("https://ehrizo.wordpress.com/feed/"), "ehrizo");
   }

   void wc_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
   {
      /*
      A comparação abaixo é feita para que a classe compute apenas o download
      de conteúdo realizado pela própria aplicação. Repare o nome do token "ehrizo"
      que também foi definido na chamada do método DownloadStringAsync
      */
      if (e.UserState == "ehrizo")
         ApplicationTitle.Text = e.BytesReceived.ToString() + " bytes recebidos";
   }

   void wc_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
   {
      if (e.Error == null && !e.Cancelled)
         txtRSS.Text = e.Result;
   }
}

O resultado da execução do código pode ser visualizado na imagem abaixo.

Grande abraço,
Eduardo Henrique Rizo

Post relacionado:

Curso Windows Phone – Tópicos

Anúncios

Coordenador de Internet da Universidade do Oeste Paulista (Unoeste) e professor universitário de disciplinas relacionadas ao desenvolvimento de sistemas para Web, gerenciamento de servidores, serviços e redes.

Marcado com: , , , , , , ,
Publicado em Windows Phone
19 comentários em “Curso Windows Phone – Classe WebClient para download de conteúdo da web no formato de dados binários ou strings
  1. […] Windows Phone – Classe WebClient para download de conteúdo da web no formato de dados binári… […]

  2. Renan disse:

    Show professor

  3. Cleidson Rodrigues disse:

    Olá Eduardo, venho estudando desenvolmento de app para windows phone e seu blog é com certeza onde encontro o melhor conteudo.
    Necessito deste codigo acima para concluir minha aplicação,pois o mesmo esta retornando erro.

    Atenciosamente,
    Cleidson Rodrigues

    • Olá Cleidson, tudo bom?
      Muito obrigado pelo elogio em relação ao Blog 🙂
      Quanto ao seu problema, qual erro está dando? Você tem como disponibilizar o trecho do código aqui?

      A classe WebClient pertence ao namespace System.Net. Veja a referência a ela e mais alguns exemplo no site do MSDN.

      Eduardo

  4. Cleidson Rodrigues disse:

    Olá Eduardo, desde ja agradeço pela atenção, segue o print dos erros

    Erro 1 http://img515.imageshack.us/img515/7672/erro1s.jpg

    Erro 2 http://img692.imageshack.us/img692/8326/erro2xt.jpg

    Quanto ao codigo, pedi apenas nova pagina modelo Portrait page , so alterei o nome da pagina para CineVideo.xaml , e no codigo C# coloquei este codigo acima.

    • Olá Cleidson, tudo bom?
      O problema com tua aplicação está relacionado com o TextBlock quem em meu projeto de teste eu nomeie como txtRSS. Esse TextBlock é o responsável por exibir o conteúdo devolvido pelo webclient.
      Você colocou esse elemento em seu arquivo .XAML? Veja como isso está representado no meu projeto de exemplo:


      ...
      ...
      <!--ContentPanel - place additional content here-->
      <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
      <ScrollViewer>
      <TextBlock Height="Auto" HorizontalAlignment="Left" Margin="6,6,0,0" Name="txtRSS" Text="RSS Text" VerticalAlignment="Top" Width="444" TextWrapping="Wrap" />
      </ScrollViewer>
      </Grid>
      ...
      ...

      Abraços,
      Eduardo

  5. Cleidson Rodrigues disse:

    Show Eduardo, funcionou , o que preciso modificar pra que estes dados consumidos sejam exibidos em forma te texto (noticia), tipo um leitor rss feed

    • Cleidson, se sua intenção é desenvolver um leitor de RSS então você poderia utilizar a classe SyndicationFeed do namespace System.ServiceModel.Syndication.
      Através dela você irá minimizar bastante o seu trabalho.

      []s
      Eduardo

  6. Cleidson Rodrigues disse:

    Ola Eduardo, tive batendo cabeça e obtive um enorme avanço com base em suas dicas, perdão se eu estiver sendo chato, preciso de uma dica sua, ao clicar na noticia ela não é exibida por completo (nenhum evento acontece), segue print de minha app.

    • Na boa Cleidson, vamos aprendendo juntos!
      Você quer tocar no título da notícia e então abrir o navegador para o link que está associado a ele?
      Se sim, basta escrever o título utilizando um HyperlinkButton e preencher a propriedade NavigateUri conforme o trecho de código abaixo. Considere que o HyperlinkButton se chama hlbGoto:

      hlbGoto.NavigateUri = new Uri(link, UriKind.Absolute);

      Abraços,
      Eduardao

  7. Elton disse:

    Olá, boa noite

    Sou iniciante em WP8, venho olhando seus exemplos e tem me ajudado bastante, seus exemplos são ótimos, vc está de parabéns.

    Poderia me tirar uma dúvida ? Como eu faço para ler um xml de várias lugares ?

    Desde já agradeço e obrigado.

    • Olá, tudo bom?
      Obrigado pelos elogios, mas infelizmente não sei se entendi sua dúvida… Poderia explicar melhor?

      Abraços,
      Eduardo H. Rizo

      • Elton disse:

        Olá, bom dia, obrigado pela resposta.

        É o seguinte, estou fazendo um exemplo onde leio um rss de noticias, eu gostaria de buscar esse rss em dois sites, buscar no

        wc.DownloadStringAsync(new Uri(“http://primeira_nocticias.xml”)) e tambem no

        wc.DownloadStringAsync(new Uri(“http://segunda_nocticias.xml”));

        Entendeu ?

      • Boa noite. Sim, entendi, mas não sei ainda onde está tua dificuldade.
        Você gostaria de juntar as notícias das fontes num único resultado?

        Abraços,
        Eduardo H. Rizo

  8. […] Como o documento XML que iremos tratar nesse exemplo é oriundo de uma URL, utilizaremos a classe WebClient para realizar o download do mesmo. Para mais detalhes sobre o uso do WebClient, acesse o post Classe WebClient para download de conteúdo da web no formato de dados binários ou strings. […]

  9. Hailson Silva disse:

    Olá Eduardo. Obg pelas aulas que tem nos dado. To estudando dev wp e tenho uma duvida qnt ao carregamento das noticias. Estou fazendo um site de Noticias Local de onde moro, tendo como a fonte o G1.
    Como que eu faço para que a mesma aparece ja formatada.
    A ideia tbm é utilizar o Panarama, E conforme o usuario arraste a tela para o lado, aparece as noticias divididas por suas respectivas categorias.(mais essa ideia é mais pra frente :D), so queria saber se é possivel fazer isso utilizando esse metodo do Tutorial.
    Mais de inicio se nao for encomodo, queria que vc me ajuda a mostrar a Noticia ja formatada, desde ja agradeço pela atençao. Abraços e parabens pelo Blog.

  10. […] Como o documento XML que iremos tratar nesse exemplo é oriundo de uma URL, utilizaremos a classe WebClient para realizar o download do mesmo. Para mais detalhes sobre o uso do WebClient, acesse o post Classe WebClient para download de conteúdo da web no formato de dados binários ou strings. […]

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

Erro: o Twitter não respondeu. Por favor, aguarde alguns minutos e atualize esta página.

Sorocaba e Região
Prestadora de serviços RIZZO GS - Sorocaba/SP

Serviços de limpeza, conservação, recepção, copa, portaria, vigia, zeladoria, jardim, elétrica, hidráulica, pintura, etc.

Contato: (15) 3357-4263 / (15) 3357-4502 - contato@rizzogs.com.br

Website: http://www.rizzogs.com.br

%d blogueiros gostam disto: