Klien HTTP mengunduh XML melalui proksi yang benar. Baris berikutnya membuat pembaca XML dari URL asli. Baris itu memulai pengambilan lain alih-alih mengurai data yang sudah diunduh.

Untuk klien yang sudah dikonfigurasi dengan rute yang dimaksud, serahkan aliran responsnya ke pengurai:

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

Namespace yang relevan adalah System.Xml dan System.Xml.Linq. Contoh ini sengaja menonaktifkan pemrosesan DTD dan resolusi eksternal; ini bukan cara mengambil entitas eksternal sembarangan melalui klien yang sama.

URI dasar mempertahankan metadata lokasi dokumen. Jika alur kerja penguraian atau validasi yang disetujui memang mengambil skema eksternal atau dependensi lain, pengambilan itu memerlukan resolver eksplisit dan desain perutean sendiri.

Jangan mendiagnosis kegagalan jaringan kedua dengan mengubah kata sandi pada klien pertama yang berhasil. Pastikan apakah pengurai menerima aliran atau URL, lalu telusuri sumber daya tambahan secara terpisah.

Artikel terkait