HTTP клиентът изтегля XML чрез правилното прокси. Следващият ред създава XML четец от оригиналния URL. Този ред стартира ново извличане, вместо да анализира изтеглените данни.

За клиент, вече конфигуриран с желания маршрут, подайте потока на отговора му към анализатора:

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

Съответните пространства от имена са System.Xml и System.Xml.Linq. Примерът умишлено изключва обработката на DTD и външното разрешаване; това не е начин да се извличат произволни външни обекти през същия клиент.

Базовият URI запазва метаданните за местоположението на документа. Ако одобрен работен процес за анализ или валидиране все пак извлича външни схеми или други зависимости, тези извличания се нуждаят от собствен явен резолвер и дизайн на маршрутизирането.

Не диагностицирайте втора мрежова повреда, като сменяте паролата на първия, успешен клиент. Установете дали анализаторът е получил поток или URL, след което проследете допълнителните ресурси отделно.

Подобни статии