2009-06-09 4 views
0

Essayer d'utiliser RSS.NET. Example sur le site est la suivante: (C#)Comment lire le flux RSS via un proxy en utilisant RSS.NET?

string url = "http://sourceforge.net/export/rss2_sfnews.php?feed"; 
RssFeed feed = RssFeed.Read(url); 
RssChannel channel = (RssChannel)feed.Channels[0]; 
listBox.DataSource = channel.Items; 

Cependant, cela ne fonctionne pas parce que je besoin d'accéder à l'alimentation via un proxy. Comment puis-je faire cela?

Une surcharge pour RssFeed.Read() prend HttpWebRequest. Je pense que c'est peut-être la façon de le mettre en place, mais je n'ai jamais utilisé cela auparavant. Aidez-moi! :)

Répondre

4

Vous pouvez en effet utiliser la surcharge HttpWebRequest de la fonction RssFeed.Read(). Ce qui suit devrait fonctionner

string url = "http://sourceforge.net/export/rss2_sfnews.php?feed"; 
string proxyUrl = "http://proxy.example.com:80/"; 
HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(url); 
WebProxy proxy = new WebProxy(proxyUrl,true); 
webReq.Proxy = proxy; 
RssFeed feed = RssFeed.Read(webReq); 

Si vous avez besoin d'un nom d'utilisateur et mot de passe pour le proxy, il est un exemple plus détaillé here.

+0

J'ai essayé et j'ai eu des erreurs d'authentification 401. J'ai corrigé cela avec l'utilisateur et le p/w et maintenant je reçois 500 erreurs, c'est-à-dire une erreur de serveur interne. Est-ce commun? Est-ce que je manque quelque chose? – Nick

2
  1. Il existe une surcharge de la méthode RssFeed.Read() qui accepte un HttpWebRequest. Vous pouvez définir le proxy sur HttpWebRequest et le lire de cette façon. Cela définit le proxy pour le flux RSS en particulier. Vous devez le faire pour chaque flux que vous lisez.
  2. Vous pouvez définir le proxy par défaut en utilisant System.Net.WebRequest.DefaultWebProxy, avant d'appeler RssFeed.Read (String). Faites ceci juste une fois; il s'appliquera à tous les flux Rss que vous lisez, ainsi que tous les autres http communicatious sortir de votre application.
+0

Merci pour l'astuce par défaut. C'est utile à savoir. – Nick