Blog de Bertrand Vergnault (MSP)

Consultant .NET / SharePoint, Toulouse

Actuellement consultant .NET / SharePoint au sein de la société Exakis à Toulouse.
Microsoft Student Partner
Microsoft Certified Professional Developer

Vous pouvez consulter mon CV ici

Vous pouvez consulter mon transcript ici.

 

RecentComments

Comment RSS

[.NET] Exposer un flux RSS à l’aide d’un HttpHandler

Dans un précédent post, j’avais montré comment créer un flux RSS à l’aide du Framework 3.5.
A présent, nous allons voir comment exposer un flux RSS à l’aide d’un HttpHandler.

Lors d’une requête HTTP en ASP.NET une page ASPX est demandée au serveur. Dans le cas d’un HttpHandler, ce n’est plus une page qui est demandée mais une classe.

Dans un premier temps, il faut préciser à notre application ASP.NET quelle classe devra être appelée lorsque notre requête HTTP sera traitée. Pour cela, nous devons ajouter dans le fichier de configuration de notre application les éléments suivants :

<httpHandlers>

   <add verb="*" path="rssfeed.axd" validate="true" type="Syndication.RssFeedHandler"/>
</httpHandlers>

L’attribut “path” indique l’url relative de la requête qui renverra vers le traitement de notre classe.
L’attribut “type” indique le nom de notre classe qui sera traitée.

Passons maintenant à la création de notre classe qui sera appelée lors du traitement de la requête. Cette classe doit implémenter l’interface IHttpHandler contenant les méthode IsReusable et ProcessRequest.

C’est dans la méthode ProcessRequest que se fera tout le traitement. En effet, elle prend en paramètre le contexte HTTP à de la requête.

Pour exposer notre flux RSS, il va donc faloir écrire le flux XML dans la réponse renvoyée au navigateur du client. Pour cela, nous allons créer un XmlWriter qui écrira dans le flux de sortie de la réponse envoyée au client :

XmlWriter wr = XmlWriter.Create(context.Response.OutputStream);

Il suffit ensuite de créer notre flux RSS (voir ce post) et de l’écrire dans notre XmlWriter.

 /*

Voir post précédent pour la création du flux

 

 */Atom10FeedFormatter formatter = new Atom10FeedFormatter(feed);
formatter.WriteTo(wr);
wr.Flush();
wr.Close();

Désormais, lorsque l’on navigue vers l’URL : http://monsite.fr/rssfeed.axd, notre flux rss s’affiche correctement.

Image1

Il est possible ensuite d’apporter des améliorations à notre flux RSS. Par exemple, la possibilité à l’utilisateur de choisir le format (RSS 2.0 ou Atom 1.0) de son flux.

Pour cela, nous allons prendre en compte la valeur d’un paramètre passé dans l’URL afin de choisir le formattage du flux :

http://monsite.fr/rssfeed.axd?format=rss ou http://monsite.fr/rssfeed.axd?format=atom

Une petite modification est à faire dans le code de notre classe appelée pour traiter la requête :

if (context.Request.QueryString["format"].Equals("rss"))
{  
  
Rss20FeedFormatter rssFormatter = new Rss20FeedFormatter(feed);
  
  
rssFormatter.WriteTo(wr);
}
else if (context.Request.QueryString["format"].Equals("atom"))
{  
  
Atom10FeedFormatter atomFormatter = new Atom10FeedFormatter(feed);
  
  
atomFormatter.WriteTo(wr);
}  

Posted: Nov 23 2008, 15:14 by bertrandv | Comments (0) RSS comment feed |
  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Filed under: ASP.NET | C#

[.NET]Consommer un flux RSS à l’aide du Framework 3.5

rss 

Le Framework 3.5 met à notre disposition des outils très simple d’utilisation afin de consommer un flux RSS. Il nous sera alors possible de l’exploiter à notre guise dans notre code.

Un flux RSS est représenté dans le Framework 3.5 par la classe SyndicationFeed.

Attention : Il faut ajouter la référence System.ServiceModel.Web à votre projet pour utiliser les objets qui sont explicités dans cet article. Les objets permettant de manipuler les flux RSS sont issus de l'espace de nom suivant :

using System.ServiceModel.Syndication;

Tout d’abord, il faut récupérer le flux RSS à charger. Pour cela nous allons utiliser un objet de type XmlReader. Nous allons créer ce XmlReader en appelant la méthode statique Create prenant en paramètre un string correspondant à l’URI du flux à récupérer.

XmlReader reader = XmlReader.Create("http://blogs.dotnet-france.com/rss.axd");

Pour charger un flux RSS, on va utiliser la méthode statique Load de la classe SyndicationFeed qui prend en paramètre un objet de type XmlReader correspondant au flux RSS à charger.

 SyndicationFeed feed = SyndicationFeed.Load(reader);

Notre objet SyndicationFeed possède une propriété Items de type IEnumerable<SyndicationItem>. On va pouvoir venir itérer sur cette propriété afin de récupérer le contenu du flux comme par exemple tous les titres des articles des blogs, etc…

IEnumerable<string> lstTitresArticles =
                     (from i in feed.Items
 
                                            select i.Title.Text);

Je ne vais pas détailler toutes les propriétés de chaque item, mais il vous est possible entre autre de récupérer la date de publication, le titre, le résumé, les catégories, les liens, etc...

Posted: Oct 29 2008, 09:49 by bertrandv | Comments (3) RSS comment feed |
  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Filed under: C# | Général

[Perso]La Certification MCPD en poche !

Et voilà j'ai réussi la certification 70-549 : PRO: Designing and Developing Enterprise Applications by Using the Microsoft .NET Framework.

Cette certification me permet d'accéder au rang de Microsoft Certified Professional Developer Entreprise Applications Developer. 

En effet, pour obtenir ce rang, il fallait posséder les 4 autres certifications du cursus MCPD :  

  • 70-536 : TS: Microsoft .NET Framework - Application Development Foundation
  • 70-528 : TS: Microsoft .NET Framework 2.0 - Web-Based Client Development
  • 70-526 : TS: Microsoft .NET Framework 2.0 – Windows-Based Client Development
  • 70-529 : TS: Microsoft .NET Framework 2.0 - Distributed Application Development
Posted: Sep 19 2008, 20:55 by bertrandv | Comments (0) RSS comment feed |
  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Filed under: Certifications | Privé