XmlDocument.Load (url) através de um proxy
Pergunta
Eu tenho um pouco de código que, basicamente, lê um documento XML usando o XmlDocument.Load (URI) método que funciona bem, mas não funciona tão bem se a chamada é feita através de um proxy.
Eu queria saber se alguém sabia de uma maneira de fazer esta chamada (ou obter o mesmo efeito) através de um proxy?
Solução
Você tem de fornecer credenciais para o proxy?
Se assim for, isso deve ajudar: "O fornecimento de credenciais de autenticação para XmlResolver quando leitura de um arquivo" http://msdn.microsoft.com/en-us/library/aa720674.aspx
Basicamente, você ...
- Criar um XmlTextReader usando o URL
- definir as credenciais de propriedade de XmlResolver do leitor
- Criar uma instância XmlDocument e passar o leitor para o método Load.
Outras dicas
Este é o código que eu acabei usando:
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);
A resposta de Uso lomaxx mas a mudança
MemoryStream ms = new MemoryStream(wc.DownloadData(url));
XmlTextReader rdr = new XmlTextReader(url);
para
MemoryStream ms = new MemoryStream(wc.DownloadData(url));
XmlTextReader rdr = new XmlTextReader(ms);
Você não pode configurar XMLDocument para o proxy uso. Você pode usar WebRequest ou WebClient classe para carregar dados via proxy e passar fluxo de resposta obtido para XMLDocument
Além disso, você pode tentar usar a classe XmlTextReader. Ele permite que você definir credenciais de rede. Para mais detalhes ver:
Fornecimento de credenciais de autenticação para XmlResolver quando leitura de um arquivo
Você precisa usar WebProxy e WebRequest para baixar o xml, em seguida, analisá-lo.