Ler RSS usando o Visual Studio.NET 2005
Olá
pessoal, meu nome é Mauricio Junior e estou disposto a mostrar como é fácil,
prático e usual a leitura de arquivo RSS. Qualquer que seja o aplicativo
consegue ler e mostrar em sua aplicação, site, intranet ou extranet. Para usar
o leitor de RSS dentro de uma empresa, é necessário utilizar uma configuração
diferente. Com esse artigo, você poderá manter seu site ou sistema interno
atualizado com as notícias da atualidade.
O que é RSS ?
RSS é um formato de distribuição de informações pela internet como notícias. Ao usar o RSS você fica sabendo imediatamente quando uma informação do seu interesse é publicada, sem que você tenha que navegar até o site de notícias. É um padrão mundial que funciona com a linguagem XML (Extensible Markup Language), tem o objetivo de compartilhar informações rapidamente com seus leitores. Esse recurso ou arquivo poderá ser lido por qualquer ferramenta que seja capaz de entender o formato XML do RSS.História do RSS
Antes do RSS, existiam
diversos formatos semelhantes para agregação de conteúdos, mas nenhum deles
alcançou popularidade ou está em uso atualmente. A principal razão disso é que
a maioria deles estavam direcionados a funcionar com apenas um serviço. Por
exemplo, em
RDF Site Summary, a primeira
versão do RSS foi criada por Dan Libby da Netscape em março de 1999 para uso no
portal "My Netscape". Esta versão ficou conhecida como RSS 0.9. Em
julho de 1999, respondendo a comentários e sugestões, Libby produziu um
protótipo chamado RSS 0.91 (com RSS significando Rich Site Summary), que simplificou
o formato.
O RSS (Really Simple
Syndication) é um descendente do RDF (Resource Description Framework)
e segue as definições da W3C para o RDF, que é descendente do XML (Extensible
Markup Language) e segue as especificações da WEC para oXML, que por sua
vez é descendente do SGML (Standard Generalized Markup Language).
- SGML -> XML -> RDF -> RSS.
O RSS é amplamente utilizado
pelas comunidades dos blogs para compartilhar as suas últimas novidades ou
textos completos e até mesmo arquivos multimídia (veja PodCasting). No ano
2000, o uso do RSS difundiu-se para as maiores empresas de notícias como a Reuters,
CNN, e a BBC. Estas empresas permitiam que outros websites incorporassem suas
notícias e resumos através de vários acordos de uso. O RSS é usado agora para
muitos propósitos, incluindo marketing, bug-reports, e qualquer outra atividade
que envolva atualização ou publicação constante de conteúdos. Hoje em dia é
comum encontrar feeds RSS nos maiores web sites e também em alguns pequenos.
Um programa conhecido como
"feed reader" ou agregadores podem verificar páginas habilitadas para
RSS para os seus usuários e informar atualizações. Estas aplicações são
tipicamente construídas como programas independentes ou como extensões de
navegadores ou programas de correio eletrônico. Estes programas estão
disponíveis para vários sistemas operacionais, inclusive existem versões para
web destes programas.
O
termo Feed vem do verbo em inglês "alimentar". Na internet, os
"RSS feeds" são listas de atualização de conteúdo de um determinado
site.
Mostrei
um pouco de teoria e história do RSS, agora passo diretamente para o código, a
parte mais importante.
Requisitos:
-
Conhecer um pouco de DataSet;
- Ter
instalado o framework 2.0;
- Ter
instalado o Visual Studio .NET 2005;
-
Desenvolvido na linguagem C#.NET
Criar Projeto
Para
criar um projeto usando o Visual Studio.NET 2005, abri a ferramenta, cliquei no
menu File > New Web Site... Em seguida apareceu uma tela (Templates) para
escolher o tipo do projeto. (Referência 1.1)
Referência:
1.1
Escolhi
a linguagem C#.NET, localização File System, coloquei o nome de “LerRSS” e no
final cliquei no botão OK. O projeto foi criado corretamente, com uma página
“Default.aspx”, App_Data e Web.Config. (Referência 1.2)
Referência:
1.2
Dentro
do arquivo “default.aspx”, coloquei o controle poderoso chamado “GridView” para
listar todas as notícias do RSS. Cliquei e arrastei para dentro da página, isso
na forma de Design. (Referência 1.3)
Referência:
1.3
Cliquei
em cima da seta “>” ao lado direito, apareceu um assistente “Tasks” onde
posso configurar várias propriedades, acrescentar colunas, definir estilos e
muito mais. (Referência 1.4)
Referência:
1.4
Como
na referência 1.4 mostra, existe um link chamado “Edit Columns”. Cliquei em
cima do e apareceram algumas opções para escolher e atribuir o tipo de coluna
que irá aparecer dentro do GridView. (Referência 1.5)
Referência:
1.5
No
espaço ao lado direito, “Available fields” escolhi a opção “HyperLinkField”, em
seguida, cliquei no botão “Add”; apareceu automaticamente do lado direito todas
as propriedades do controle. Alterei as opções: (Referência 1.6)
-
HeaderText = Title //
título da coluna -
Target = _blank //
abrir o link como blank, ou seja, em outra tela. - DataNavigateUrlFields = link // tag
link do rss - DataTextField = title // tag title do rss -
ShowHeader = false //
esconder o titulo da coluna |
Referência: 1.6
Cliquei
no botão OK, o próximo passo foi escolher um formato padrão “Classic”. Não
posso esquecer de que coloquei uma fonte padrão com o nome “Verdana” nas
propriedades do GridView. (Referência 1.7)
Referência:
1.7
protected void
Page_Load(object sender, EventArgs e) { if
(!Page.IsPostBack) { //preenchendgridview preencheGrid(); } } |
Referência:
1.8
Dentro
do Page_Load, chamo um método “preencheGrid”. Esse será o método responsável
para preencher o GridView. A referência 1.9, mostro o método.
private void preencheGrid() { try { //criar
o dataset DataSet
dtSet = new DataSet(); dtSet.ReadXml("http://msdn.microsoft.com/asp.net/rss.xml"); this.gridView.DataSource
= dtSet.Tables[2].DefaultView; this.gridView.DataBind(); } catch
(Exception ex) { throw
ex; } } |
Referência:
1.9
Resultado
final (Referência 1.10)
Referência:
1.10
Lendo RSS através do proxy interno
Veja
o erro. (Referência 1.11)
Referência:
1.11
Com
isso, fiz algumas alterações no método “preencheGrid()” e criei outro chamado
GetStream que retorna um valor do tipo Stream. (Referência 1.12)
PreencheGrid()
private void preencheGrid() { try { //criando
variavel proxy string proxy = "http://10.2.1.4:8080"; DataSet
dtSet = new DataSet(); //carrega
xml através de stream //se
for fora do proxy, soh usar a linha comentada acima dtSet.ReadXml(GetStream("http://msdn.microsoft.com/asp.net/rss.xml",
proxy)); this.gridView.DataSource =
dtSet.Tables[2].DefaultView; this.gridView.DataBind(); } catch
(Exception ex) { throw
ex; } } |
Referência:
1.12
Acrescentei
a variável “proxy” do tipo “string”. Atribui o proxy de minha empresa, ou seja,
o ip e porta que é utilizada para acessar a internet. A parte nova é carregar o
xml através de stream. Utilizei o mesmo dtSet.ReadXml passando um novo método
chamado GetStream.
GetStream
é um método que recebe dois parâmetros do tipo string. Endereço do RSS e o
endereço do proxy. (Referência 1.13)
//carrega xml através
de stream //se for fora do
proxy, soh usar a linha comentada acima dtSet.ReadXml(GetStream("http://msdn.microsoft.com/asp.net/rss.xml",
proxy)); |
Referência:
1.13
private
System.IO.Stream GetStream(string p, string
proxy) { //criar
objeto request System.Net.WebRequest
webReq; webReq = System.Net.WebRequest.Create(p); //criar
objeto proxy System.Net.WebProxy
webProxy = new WebProxy(proxy,true); //criar credenciais
para utilizar o proxy. utilizar usuário //e senha
para logar no proxy //essas
credenciais podem ser colocadas no web.config para ficar melhor webProxy.Credentials = new System.Net.NetworkCredential("usuario", "senha",
"dominio"); webReq.Proxy = webProxy; //retornar
stream return
webReq.GetResponse().GetResponseStream();
} |
Referência:
1.14
A
referência (1.14) mostro o método GetStream. O mesmo recebe dois tipos de
parâmetros. A primeira linha, crio o objeto do tipo System.Net.WebRequest. Logo
depois utilizo o Create passando o endereço do RSS que recebo na entrada do
método. (Referência 1.15)
//criar
objeto request System.Net.WebRequest
webReq; webReq = System.Net.WebRequest.Create(p); |
Referência:
1.15
//criar
objeto proxy System.Net.WebProxy
webProxy = new WebProxy(proxy,true); |
Referência:
1.16
A
(referência 1.17), uso a variável
“webProxy” para informar as credenciais, ou seja, usuário, senha e domínio da
rede da empresa. No final, atribuo a variável “webReq” aos valores da variável
“webProxy”. O método precisa de um
retorno do tipo Stream, com isso retorno
webReq.GetResponse().GetResponseStream();.
//criar credenciais
para utilizar o proxy, ou seja, utilizar usuário //e senha para logar
no proxy //essas credenciais
podem ser colocadas no web.config para ficar melhor webProxy.Credentials = new System.Net.NetworkCredential("usuario", "senha",
"dominio"); webReq.Proxy = webProxy; //retornar
stream return
webReq.GetResponse().GetResponseStream(); |
Referência: 1.17
Depois
desse método criado para logar no proxy interno, fica fácil todo o
funcionamento para leitura do RSS. Depois da alteração, o código da página
“default.aspx.cs” fica dessa forma. (Referência 1.18).
using System; using
System.Data; using
System.Configuration; using
System.Web; using System.Web.Security; using
System.Web.UI; using
System.Web.UI.WebControls; using
System.Web.UI.WebControls.WebParts; using
System.Web.UI.HtmlControls; using
System.Net; public partial class _Default : System.Web.UI.Page
{ protected
void Page_Load(object
sender, EventArgs e) { if
(!Page.IsPostBack) { //preenchendgridview preencheGrid(); } } private void preencheGrid() { try { //criando
variavel proxy string proxy = "http://10.2.1.4:8080"; DataSet
dtSet = new DataSet(); //carrega xml através de stream //se
for fora do proxy, soh usar a linha comentada acima dtSet.ReadXml(GetStream("http://msdn.microsoft.com/asp.net/rss.xml",
proxy)); this.gridView.DataSource
= dtSet.Tables[2].DefaultView; this.gridView.DataBind(); } catch
(Exception ex) { throw
ex; } } private
System.IO.Stream GetStream(string p, string
proxy) { //criar
objeto request System.Net.WebRequest
webReq; webReq = System.Net.WebRequest.Create(p); //criar
objeto proxy System.Net.WebProxy
webProxy = new WebProxy(proxy,true); /criar credenciais
para utilizar o proxy, ou seja, utilizar usuário //e senha para logar
no proxy //essas credenciais
podem ser colocadas no web.config para ficar melhor webProxy.Credentials = new System.Net.NetworkCredential("usuario", "senha",
"dominio"); webReq.Proxy = webProxy; //retornar
stream return
webReq.GetResponse().GetResponseStream(); } } |
Referência:
1.18
Compilei
a aplicação e iniciei o aplicativo para ler o RSS, o resultado foi. (Referência
1.19)
Referência:
1.19
Bom,
fico por aqui espero ter ensinado de uma forma fácil e simples. Qualquer
dúvida, favor entrar em contato pelo e-mail mauricio@aspneti.com.
Livros
que publiquei:
Mauricio
Junior
www.aspneti.com
www.ascompras.com
Sign up to our newsletter
Receive our latest updates about programming languages, software, database, books, ebooks, classes, jobs and more.