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
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 ...
- Créer un XmlTextReader en utilisant l'URL
- Définition de la propriété Credentials du fichier XmlResolver du lecteur
- Créez une instance XmlDocument et passez le lecteur à la méthode Load.
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
Vous devez utiliser WebProxy et WebRequest pour télécharger le xml, puis l'analyser.
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);
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);
Voir @ Correction de Scott ... –