来自 URL 的 XML - 根级别的数据无效。第 1 行,位置 1 为啥它适用于一个 URL 而不是另一个?

Posted

技术标签:

【中文标题】来自 URL 的 XML - 根级别的数据无效。第 1 行,位置 1 为啥它适用于一个 URL 而不是另一个?【英文标题】:XML from URL - Data at the root level is invalid. Line 1, position 1 Why it works with one URL and not the other?来自 URL 的 XML - 根级别的数据无效。第 1 行,位置 1 为什么它适用于一个 URL 而不是另一个? 【发布时间】:2020-06-21 07:15:14 【问题描述】:

据我所知,这两个端点都是有效的 XML 输出。但是,当我在第二个端点上使用相同的代码时,我得到了错误:

根级别的数据无效。第 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】:

我打开了 Fiddler 并查看了请求及其响应,你瞧你的端点返回的是 JSON,而不是 XML:

如果我使用 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);

【讨论】:

它也不安全并且返回http(不是https)。 @jdweng 它正在为我返回 https...? 真的吗?查看您发布的图片的第一行。 @jdweng HTTP/1.1?无论连接是否使用 TLS 保护,都会使用它 我猜这取决于服务器。我经常看到https。

以上是关于来自 URL 的 XML - 根级别的数据无效。第 1 行,位置 1 为啥它适用于一个 URL 而不是另一个?的主要内容,如果未能解决你的问题,请参考以下文章

xml.LoadData - 根级别的数据无效。第 1 行,位置 1

C# XML 解析 - 根级别的数据无效。第 1 行,位置 1

System.Xml.XmlException '根级别的数据无效,第 1 行,位置 1' 当我从 1 个 xml 文件更改为 5 时出现错误

根级别上的数据无效。 第 1 行,位置 1。

web平台安装器 根级别上的数据无效.行1,位置1.

根级别上的数据无效。 行 1,位置 1