XML из URL - данные на уровне root недопустимы. Строка 1, позиция 1 Почему это работает с одним URL, а не с другим? - PullRequest
0 голосов
/ 09 марта 2020

Насколько я могу судить, обе эти конечные точки являются действительными XML выходными данными. Однако когда я использую тот же код во второй конечной точке, я получаю ошибку:

Данные на уровне root недопустимы. Строка 1, позиция 1

Вот мой код:

        //Works
        XmlDocument testDocument = new XmlDocument();
        testDocument.Load("https://www.w3schools.com/xml/note.xml");

        //Fails
        XmlDocument testDocumentTwo = new XmlDocument();
        testDocumentTwo.Load("https://www.domainNameHere.com/direct/umbraco/api/productsearch/NameSearch?countryCode=en-gb");

1 Ответ

1 голос
/ 09 марта 2020

Я открыл Fiddler и посмотрел запрос и его ответ, и вот, ваша конечная точка возвращает JSON, а не XML:

Fiddler screenshot, showing result is JSON

Если я использую HttpClient для установки явного заголовка Accept, тогда я получаю XML назад и все работает:

using var client = new HttpClient();
var requestMessage = new HttpRequestMessage(HttpMethod.Get, "https://www.clinigengroup.com/direct/umbraco/api/productsearch/NameSearch?countryCode=en-gb");
requestMessage.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/xml"));
var response = await client.SendAsync(requestMessage);
var xml = await response.Content.ReadAsStringAsync();

XmlDocument testDocumentTwo = new XmlDocument();
testDocumentTwo.LoadXml(xml);
...