如何从 C# 中的 XML Web 服务获取值?

Posted

技术标签:

【中文标题】如何从 C# 中的 XML Web 服务获取值?【英文标题】:How do I get a value from an XML web service in C#? 【发布时间】:2010-09-08 05:52:46 【问题描述】:

在 C# 中,如果我需要打开一个 HTTP 连接,下载 XML 并从结果中获取一个值,我该怎么做?

为了保持一致性,假设 web 服务位于 www.webservice.com,如果您将 POST 参数 fXML=1 传递给它,它会返回

<xml><somekey>somevalue</somekey></xml>

我希望它吐出“somevalue”。

【问题讨论】:

【参考方案1】:

我认为先阅读这篇文章会很有用:

Creating and Consuming a Web Service(在 .NET 中)

这是一系列关于如何在 .NET 中使用 Web 服务的教程,包括如何使用 XML 输入(反序列化)。

【讨论】:

【参考方案2】:

我使用这段代码,效果很好:

System.Xml.XmlDocument xd = new System.Xml.XmlDocument;
xd.Load("http://www.webservice.com/webservice?fXML=1");
string xPath = "/xml/somekey";
// this node's inner text contains "somevalue"
return xd.SelectSingleNode(xPath).InnerText;

编辑:我刚刚意识到您说的是网络服务,而不仅仅是普通的 XML。在您的 Visual Studio 解决方案中,尝试右键单击解决方案资源管理器中的引用并选择“添加 Web 引用”。将出现一个对话框询问 URL,您可以将其粘贴到:“http://www.webservice.com/webservice.asmx”。 VS 会自动生成你需要的所有助手。然后你就可以打电话了:

com.webservice.www.WebService ws = new com.webservice.www.WebService();
// this assumes your web method takes in the fXML as an integer attribute
return ws.SomeWebMethod(1);

【讨论】:

您通过 GET 传递参数,而不是按作者要求的 POST 传递参数 获取 aku 的 POST 信息并编辑答案——我还没有 2k 代表 :)【参考方案3】:

你可以使用类似的东西:

var client = new WebClient();
var response = client.UploadValues("www.webservice.com", "POST", new NameValueCollection "fXML", "1");
using (var reader = new StringReader(Encoding.UTF8.GetString(response)))

    var xml = XElement.Load(reader);
    var value = xml.Element("somekey").Value;
    Console.WriteLine("Some value: " + value);                

请注意,我没有机会测试此代码,但它应该可以工作 :)

【讨论】:

对于 Web 服务来说,这似乎是一项非常繁重的工作和开销?! Rob,Web 服务并不总是 WSDL\SOAP 的优点。有时您需要自己从服务器获取和解析数据。关于这个问题的一个奇怪的事情是 POST 方法。通常这种简单的服务使用 GET。【参考方案4】:

还值得补充的是,如果您需要专门使用 POST 而不是 SOAP,那么您可以配置 Web 服务以接收 POST 调用:

查看 MSDN 上的页面: Configuration Options for XML Web Services Created Using ASP.NET

【讨论】:

以上是关于如何从 C# 中的 XML Web 服务获取值?的主要内容,如果未能解决你的问题,请参考以下文章

从 C# .NET Core(特别是 Workday)调用 Java Web 服务。如何在soap请求中获取xml属性

如何从 C# 中的 xml 字符串中获取特定值

如何从 C# 中的 xml 元素中获取最高值?

如何将xml传递给C#中的View?

如何从 RSA 公钥 XML 文件 .net core c# 中获取 n 值

使用 C# 查询存储在属性中的 XML 值并导入数据集