[Desenvolvimento] Obtendo dados da web via REST através da classe WebClient

0

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 JSON) 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#:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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.

 

Post relacionado: Curso Windows Phone Gratuito

Grande abraço,
Eduardo Henrique Rizo (@eduardorizo)

Fonte: Blog do Eduardo H. Rizo – Curso Windows Phone – Classe WebClient para download de conteúdo da web no formato de dados binários ou strings

Share.

About Author

Bacharel em Ciência da Computação pela FIPP/Unoeste, Pós-Graduado em Desenvolvimento de Sistemas Web, Segurança da Informação e Avaliação do Ensino e da Aprendizagem, Professor universitário e responsável pelo setor de desenvolvimento de sistemas web da Universidade do Oeste Paulista. MCP e MCPS pela Microsoft e nas horas vagas dedica um pouco do seu tempo escrevendo posts técnicos sobre desenvolvimento de sistemas web, windows phone, gerenciamento de servidores e outros assuntos para a comunidade.