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 1997 a Microsoft criou o Channel Definition Format para um recurso chamado Active Channel do Internet Explorer 4.0, que ficou mais ou menos popular.

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

 
A referĂȘncia 1.7 mostra em destaque, os cĂ­rculos em auto Format e classic, ou seja, foram as opçÔes que escolhi para o controle da tela. Passei para dentro da classe “default.aspx.cs”, coloquei os seguintes cĂłdigos. (ReferĂȘncia 1.8)

 

 

    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

Criei um objeto do tipo DataSet, utilizei o mĂ©todo ReadXml passando o endereço do RSS da Microsoft entre aspas duplas. Adicionei o Grid que estĂĄ com o nome ID igual a “gridView”. Atribui o DataSource do grid ao DataSet criado anteriormente passando a Table[2].DefaultView. A Ășltima linha, carreguei o grid com o mĂ©todo DataBind(). 

 

Resultado final (ReferĂȘncia 1.10)

 


ReferĂȘncia: 1.10

Lendo RSS através do proxy interno

Usando o sistema na internet da empresa, percebi que retornou um erro falando que não conseguiu ler sem a autenticação do proxy. Dessa forma, mudei algumas linhas de código para autenticar com o usuårio e senha.

 
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

A (referĂȘncia 1.16), crio um objeto proxy, passo o endereço do proxy. O true Ă© afirmando que o proxy Ă© de um endereço local, ou seja, da rede interna.

 

        //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