在C#中,如果我需要打开HTTP连接,下载XML并从结果中获取一个值,我该怎么做?
为了保持一致性,假设网络服务在www.webservice.com,并且如果你传递POST参数fXML = 1它会让你回来
<xml><somekey>somevalue</somekey></xml>
我希望它能吐出“某些价值”。
答案 0 :(得分:4)
我认为首先阅读它会很有用:
Creating and Consuming a Web Service(在.NET中)
这是一系列有关如何在.NET中使用Web服务的教程,包括如何使用XML输入(反序列化)。
答案 1 :(得分:3)
我使用此代码并且效果很好:
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;
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);
答案 2 :(得分:2)
你可以使用类似的东西:
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);
}
注意我没有机会测试这段代码,但它应该可以工作:)
答案 3 :(得分:0)
如果您需要专门使用POST而不是SOAP,那么您可以配置Web服务以接收POST调用:
查看MSDN上的页面: Configuration Options for XML Web Services Created Using ASP.NET