XMLDocument.Load (url) через прокси - PullRequest
       24

XMLDocument.Load (url) через прокси

13 голосов
/ 24 сентября 2008

У меня есть немного кода, который в основном читает документ XML с использованием метода XMLDocument.Load (uri), который работает нормально, но не так хорошо, если вызов выполняется через прокси.

Мне было интересно, знает ли кто-нибудь, как сделать этот вызов (или добиться того же эффекта) через прокси-сервер?

Ответы [ 5 ]

14 голосов
/ 24 сентября 2008

Это код, который я использовал в итоге:

WebProxy wp = new WebProxy(Settings.Default.ProxyAddress);
wp.Credentials = new NetworkCredential(Settings.Default.ProxyUsername, Settings.Default.ProxyPassword);
WebClient wc = new WebClient();
wc.Proxy = wp;

MemoryStream ms = new MemoryStream(wc.DownloadData(url));
XmlTextReader rdr = new XmlTextReader(ms);
return XDocument.Load(rdr); 
12 голосов
/ 17 марта 2009

Используйте ответ lomaxx, но измените

MemoryStream ms = new MemoryStream(wc.DownloadData(url));
XmlTextReader rdr = new XmlTextReader(url);

до

MemoryStream ms = new MemoryStream(wc.DownloadData(url));
XmlTextReader rdr = new XmlTextReader(ms);
11 голосов
/ 24 сентября 2008

Нужно ли предоставлять учетные данные для прокси?

Если это так, это должно помочь: «Предоставление учетных данных аутентификации для XmlResolver при чтении из файла» http://msdn.microsoft.com/en-us/library/aa720674.aspx

По сути, вы ...

  1. Создайте XmlTextReader, используя URL
  2. Установить свойство Credentials читателя XmlResolver
  3. Создайте экземпляр XmlDocument и передайте средство чтения в метод Load.
6 голосов
/ 24 сентября 2008

Вы не можете настроить XMLDocument для использования прокси. Вы можете использовать класс WebRequest или WebClient для загрузки данных через прокси и передачи полученного потока ответов в XMLDocument

Также вы можете попробовать использовать класс XmlTextReader. Это позволяет вам установить сетевые учетные данные. Подробнее см .:

Предоставление учетных данных аутентификации для XmlResolver при чтении из файла

3 голосов
/ 24 сентября 2008

Вам необходимо использовать WebProxy и WebRequest для загрузки XML, а затем проанализировать его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...