Le client HTTP télécharge le XML via le bon proxy. La ligne suivante crée un lecteur XML à partir de l'URL d'origine. Cette ligne lance une nouvelle récupération au lieu d'analyser les données téléchargées.

Pour un client déjà configuré avec la route voulue, remettez son flux de réponse à l'analyseur :

using var response = await client.GetAsync(documentUri);
response.EnsureSuccessStatusCode();
using var stream = await response.Content.ReadAsStreamAsync();

var settings = new XmlReaderSettings
{
    DtdProcessing = DtdProcessing.Prohibit,
    XmlResolver = null
};
using var reader = XmlReader.Create(stream, settings, documentUri.AbsoluteUri);
var document = XDocument.Load(reader);

Les espaces de noms concernés sont System.Xml et System.Xml.Linq. L'exemple désactive volontairement le traitement DTD et la résolution externe ; ce n'est pas un moyen de récupérer des entités externes arbitraires via le même client.

L'URI de base conserve les métadonnées d'emplacement du document. Si un flux d'analyse ou de validation approuvé récupère malgré tout des schémas externes ou d'autres dépendances, ces récupérations ont besoin de leur propre résolveur explicite et d'une conception de routage.

Ne diagnostiquez pas une seconde panne réseau en changeant le mot de passe du premier client, celui qui fonctionne. Déterminez si l'analyseur a reçu un flux ou une URL, puis suivez séparément toute ressource supplémentaire.

Articles similaires