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#