Il client HTTP scarica l'XML attraverso il proxy corretto. La riga successiva crea un lettore XML dall'URL originale. Quella riga avvia un'altra richiesta invece di analizzare i dati scaricati.

Per un client già configurato con il percorso previsto, consegna il suo flusso di risposta al parser:

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);

Gli spazi dei nomi rilevanti sono System.Xml e System.Xml.Linq. L'esempio disattiva deliberatamente l'elaborazione DTD e la risoluzione esterna; non è un modo per recuperare entità esterne arbitrarie tramite lo stesso client.

L'URI di base conserva i metadati di posizione del documento. Se un flusso di lavoro di analisi o convalida approvato recupera davvero schemi esterni o altre dipendenze, tali recuperi richiedono un proprio resolver esplicito e una progettazione del routing.

Non diagnosticare un secondo errore di rete cambiando la password del primo client, quello funzionante. Stabilisci se il parser ha ricevuto un flusso o un URL, poi segui separatamente eventuali risorse aggiuntive.

Articoli correlati