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?

Foi útil?

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ê ...

  1. Criar um XmlTextReader usando o URL
  2. definir as credenciais de propriedade de XmlResolver do leitor
  3. 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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top