SOAP XML客户端 - 如何在Visual Studio 2010中使用C#编写?

6
我是.NET世界的新手,但必须使用VStudio C# 2010(.NET 4.0)以SOAP Xml方式从Web服务请求数据。我在这里搜索答案,但更加困惑了。MSDN表示,“创建XML Web服务客户端”对于.NET 4.0是遗留问题,即WSDL是遗留问题。他们说要使用“WCF”代替。
在WCF中,我迷失了——太多而且太模糊了。它肯定比那简单…
我能在网上找到的所有示例都使用WSDL,“遗留技术”。
这里是我需要使用的服务定义,以便从Web服务获取数据:
请求:
POST /catalog.asmx HTTP/1.1
Host: www.somewebsite.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "https://www.somewebsite.com/KeywordSearch"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <KeywordSearch xmlns="https://www.somewebsite.com/">
  <searchTerm>string</searchTerm>
  <resultsReturned>int</resultsReturned>
   </KeywordSearch>
  </soap:Body>
</soap:Envelope>

响应:

HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    ...some stuff...
  </soap:Body>
</soap:Envelope>

那么,构建这个简单客户端的正确或至少最合乎逻辑的方式是什么?您建议新手使用哪些工具/库/方法(假设使用VS 2010 C#,.NET 4.0环境)?


1
FYI,"legacy" 指的是创建 ASMX Web 服务并使用 "Add Web Reference"。正如 marc_s 建议的那样,您应该使用 "Add Service Reference",这应该可以正常工作。 - John Saunders
1个回答

5
如果您有一个WSDL / XSD来描述该服务,或者如果您可以导航到URL以获取元数据,则使用basicHttpBinding的WCF可能是最佳选择。 WSDL绝对不是“遗留” - 如果有任何遗留问题,那就是ASP.NET / ASMX Web服务。
只要有WSDL / XSD或可以连接到的URL,只需在Visual Studio中执行“添加服务引用”,您就可以立即调用WCF服务 - 相信我! 您不需要了解所有WCF来调用简单的SOAP Web服务.... 此外,随着WCF 4.0的推出,许多东西 - 特别是配置 - 已得到大大改进和简化。
至于资源:有MSDN WCF Developer Center,其中包括从初学者教程到文章和示例代码的所有内容。
此外,请查看MSDN上的屏幕截图库,以获取关于WCF的任何主题的非常有用的10-15分钟信息。

看起来很简单。谢谢!我会试一下的。 - rita
@rita: 瞧!WCF其实并不是那个吓人的大怪兽;-) 逐步学习,掌握目前所需的内容——一切就会变得简单明了 :-) - marc_s

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接