2008-09-24 9 views
13

J'ai un peu de code qui lit essentiellement un document XML en utilisant la méthode XMLDocument.Load (uri) qui fonctionne bien, mais ne fonctionne pas si l'appel est fait via un proxy. Je me demandais si quelqu'un connaissait un moyen de faire cet appel (ou obtenir le même effet) à travers un proxy?XMLDocument.Load (url) via un proxy

Répondre

11

Devez-vous fournir des informations d'identification au proxy?

Si oui, cela devrait aider: "Fourniture d'authentification de vérification des pouvoirs à XmlResolver lors de la lecture d'un fichier" http://msdn.microsoft.com/en-us/library/aa720674.aspx

Fondamentalement, vous ...

  1. Créer un XmlTextReader en utilisant l'URL
  2. Définition de la propriété Credentials du fichier XmlResolver du lecteur
  3. Créez une instance XmlDocument et passez le lecteur à la méthode Load.
6

Vous ne pouvez pas configurer XMLDocument pour utiliser un proxy. Vous pouvez utiliser la classe WebRequest ou WebClient pour charger des données via proxy et transmettre le flux de réponse obtenu à XMLDocument

Vous pouvez également essayer d'utiliser la classe XmlTextReader. Il vous permet de définir les informations d'identification réseau. Pour plus de détails voir:

Supplying Authentication Credentials to XmlResolver when Reading from a File

3

Vous devez utiliser WebProxy et WebRequest pour télécharger le xml, puis l'analyser.

13

C'est le code que je fini par utiliser:

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

Voir @ Correction de Scott ... –

11

Utilisez la réponse de lomaxx mais changer

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

à

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