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