2009-06-09 2 views
0

Пытается использовать RSS.NET. Example на сайте: (C#)Как читать RSS-канал через прокси-сервер с помощью 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; 

Однако это не удается, потому что мне нужно получить доступ к фид через прокси-сервер. Как мне это сделать?

Перегрузка для RssFeed.Read() принимает HttpWebRequest. Я думаю, что это может быть способ установить это, но я не использовал это раньше. Помогите! :)

ответ

4

Вы действительно можете использовать перегрузку HttpWebRequest функции RssFeed.Read(). Следующие должны работать

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

2
  1. Существует перегрузка метода RssFeed.Read(), который принимает HttpWebRequest. Вы можете установить прокси-сервер в HttpWebRequest и прочитать его таким образом. Это устанавливает прокси для RSS-канала, в частности. Вам нужно будет сделать это для каждого загружаемого файла.
  2. Вы можете установить прокси-сервер по умолчанию, используя System.Net.WebRequest.DefaultWebProxy, перед вызовом RssFeed.Read (String). Сделайте это только один раз; он будет применяться ко всем каналам Rss, которые вы читаете, а также ко всем остальным http-сообщениям из вашего приложения.
+0

Спасибо за совет по умолчанию. Это полезно знать. – Nick

Смежные вопросы