繁体   English   中英

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

[英]How do I get a value from an XML web service in C#?

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

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

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

我希望它吐出“somevalue”。

我认为首先阅读它会很有用:

创建和使用Web服务 (在.NET中)

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

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

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;

编辑:我刚刚意识到你正在谈论一个Web服务而不仅仅是简单的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);

你可以使用这样的东西:

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

注意我没有机会测试这段代码,但它应该工作:)

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

查看MSDN上的页面: 使用ASP.NET创建的XML Web服务的配置选项

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM