2008-09-24 17 views
13

Ho un po 'di codice che legge fondamentalmente un documento XML utilizzando il metodo XMLDocument.Load (uri) che funziona bene, ma non funziona così bene se la chiamata viene effettuata tramite un proxy.XMLDocument.Load (url) attraverso un proxy

Mi chiedevo se qualcuno fosse a conoscenza di un modo per effettuare questa chiamata (o ottenere lo stesso effetto) tramite un proxy?

risposta

11

Devi fornire le credenziali al proxy?

Se è così, questo dovrebbe aiutare: "Fornire credenziali di autenticazione per XmlResolver durante la lettura da un file" http://msdn.microsoft.com/en-us/library/aa720674.aspx

In sostanza, si ...

  1. Creare un XmlTextReader utilizzando l'URL
  2. Impostare la proprietà Credentials del lettore XmlResolver
  3. Creare un'istanza XmlDocument e passare il lettore al metodo Load.
6

Non è possibile configurare XMLDocument per utilizzare il proxy. È possibile utilizzare la classe WebRequest o WebClient per caricare i dati tramite proxy e passare il flusso di risposta ottenuto a XMLDocument

Inoltre, è possibile provare a utilizzare la classe XmlTextReader. Ti consente di impostare le credenziali di rete. Per i dettagli si veda:

Supplying Authentication Credentials to XmlResolver when Reading from a File

3

è necessario utilizzare WebProxy e WebRequest per scaricare il codice XML, poi analizzarlo.

13

Questo è il codice che ho finito per usare: la risposta di

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

vedere @ Scott ... –

11

Usa lomaxx ma cambiare la correzione di

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

a

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