2009-06-09 73 views
0

試圖使用RSS.NETExample在網站上爲:(C#)如何使用RSS.NET通過代理讀取RSS feed?

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; 

然而,這種失敗,因爲我需要通過代理服務器來訪問飼料。我該怎麼做呢?

RssFeed.Read()的重載需要HttpWebRequest。我認爲這可能是設置它的方式,但我以前沒有使用過。幫幫我! :)

回答

4

你的確可以使用RssFeed.Read()函數的HttpWebRequest的過載。以下應工作

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); 

如果你需要代理用戶名和密碼,還有一個更詳細的例子here

+0

我試過了,我得到了身份驗證401錯誤。我用用戶和p/w解決了這個問題,現在我得到了500個錯誤,即內部服務器錯誤。這是常見的嗎?我錯過了什麼嗎? – Nick 2009-06-09 14:14:08

2
  1. 有RssFeed.Read()方法接受HttpWebRequest的重載。您可以在HttpWebRequest上設置代理並以此方式讀取它。這特別設置了RSS源的代理。您需要爲讀取的每個Feed執行此操作。
  2. 您可以在調用RssFeed.Read(String)之前使用System.Net.WebRequest.DefaultWebProxy來設置默認代理。只做一次;它將適用於您閱讀的所有Rss Feed,以及從您的應用中傳出的所有其他http通信。
+0

感謝您的默認提示。知道這一點很有用。 – Nick 2009-06-09 14:13:21