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

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

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

Ответы

Ответ 1

Вам нужно предоставить учетные данные прокси?

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

В принципе, вы...

  • Создайте XmlTextReader, используя URL
  • Задайте свойство Credentials для читателя XmlResolver
  • Создайте экземпляр XmlDocument и передайте читателю метод Load.

Ответ 2

Это код, который я закончил, используя:

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

Ответ 3

Используйте 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);

Ответ 4

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

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

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

Ответ 5

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