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 (http://www.eduardorizo.com.br/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("http://www.eduardorizo.com.br/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
[twitter-follow screen_name=’eduardorizo’ show_count=’yes’]
Pingback: Curso Windows Phone – Tópicos « Blog do Eduardo H. Rizo
Show professor
Opa, muito obrigado.
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
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
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
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.
http://img822.imageshack.us/img822/4587/titulopassandomargem.jpg
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
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
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
Pingback: Curso Windows Phone – Como ler dados de documentos XML usando LINQ como forma de consulta | Blog do Eduardo H. Rizo
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.
Bom dia Hailson, tudo bom?
Trazer o XML referente ao feed através desse método que explico no post é uma alternativa viável. Para facilitar seu entendimento eu vou colocar alguns tópicos para ajudar a montar sua ideia.
1) Ler o conteúdo XML e colocar os dados dentro de uma lista que represente a informação desejada. Exemplo: Como ler dados de documentos XML usando LINQ como forma de consulta
2) Utilizar um Listbox com datatemplates para formatar e exibir os dados que você deseja. Exemplos: Vários posts sobre o assunto
3) Provavelmente você também precisar de uma forma para exibir imagens oriundas da Internet. Exemplos: Como utilizar imagens da Internet em sua APP Windows Phone e Como exibir imagens a partir de URLs da Internet
Bem, esse é um caminho.
Quaisquer outras dúvidas, vá perguntando.
Abraços,
Eduardo H. Rizo
Pingback: [Desenvolvimento] Como ler dados de documentos XML usando LINQ como forma de consulta - Windows Team