摘要式身份验证后的 XML 变量

Posted

技术标签:

【中文标题】摘要式身份验证后的 XML 变量【英文标题】:Var with XML after Digest Authentication 【发布时间】:2013-07-11 14:06:37 【问题描述】:

摘要式身份验证后:

var resultText = Digester.GrabResponse("/blabla");

我在 var resulText 中有这个:

<?xml version="1.0" encoding="utf-8"?>
<response>
 <HELLO>
  <time>08:10</time>
  <date>11.08.09</date>
  <temp>35.5</temp>
  <humi>37.7</humi>
 </HELLO>
</response>

我尝试使用 XDocument 获取日期的值,但没有成功。

【问题讨论】:

你尝试了什么? didn't work 是什么意思? 使用 XDocument:路径中有非法字符。使用 XReader: nullreference。 XDocument temp = XDocument.Load(resultText.ToString()); var date = temp.Descendants("date").First(); label1.Text = date.ToString();*/ 【参考方案1】:

这真的很简单:-

XDocument xml = XDocument.Parse(resultText.ToString());

var date = (from n in xml.Descendants("HELLO")
            select n.Element("date").Value).SingleOrDefault().ToString();

您需要使用XDocument.Parse 方法。看起来您正在将 XML 字符串作为 URI 传递给 Load 方法,这显然不起作用。

【讨论】:

当然。我正在加载一个字符串.... XDocument.Load 想要一个 URI... 快速而出色的响应。谢谢 注意:如果响应包含多个“Hello”元素,这将不起作用(将引发异常)。如果缺少“日期”元素,它也会抛出异常。出于显而易见的原因,将在 Select 中引发异常。 SingleOrDefault 也可能是 Single 并且 ToString() 在这里是多余的。这对您来说可能就足够了,但在我看来,这不是一个非常稳健的方法。 @ByteBlast 他的问题是使用XDocument.Load 并传入XML 字符串而不是URI,所以实际上,答案没有任何问题。这个查询是一个简单的例子来证明它是有效的。我在他的示例 XML 中没有看到超过一个 HELLO 元素。如果是这样,我显然不会选择使用 SingleOrDefault() 来演示,而是会调用类似 .ToList&lt;string&gt;(); 的东西。

以上是关于摘要式身份验证后的 XML 变量的主要内容,如果未能解决你的问题,请参考以下文章

为啥在 Django 中需要基本或摘要式身份验证?

使用 HttpURLConnection 进行摘要式身份验证

ROBOTFRAMEWORK 的摘要式身份验证

您如何将 JMeter 与摘要式身份验证一起使用?

.Net Core HttpClient 摘要式身份验证

使用 URLConnection 进行摘要式身份验证