Web服务/ WCF新手:针对基于Java的SOAP Web服务创建WCF代理客户端/对象

时间:2011-09-15 22:55:27

标签: wcf web-services soap cross-platform webservice-client

我有一个.Net Web应用程序需要通过SOAP与基于Java的系统进行交互。

除了一些基本的WCF之外,我还没有使用过Web服务,并且对此有任何指导。

基本上,我正在考虑创建一个WCF代理客户端来连接到SOAP Web服务。该系统是基于Java的第三方系统,提供SOAP接口。

提供的示例代码使用wsdl生成代理,但不是在WCF时代之前?

UsernameToken aToken = new UsernameToken("root", "root", PasswordOption.SendPlainText);

MetadataService.MetadataService aMetadataService = new MetadataService.MetadataService();

SoapContext aContext = aMetadataService.RequestSoapContext;

aContext.Security.Tokens.Add(aToken);

String aXmp = aMetadataService.s_getXmpFromRecordID(wAssetId.Text);

有什么建议吗? 谢谢!

1 个答案:

答案 0 :(得分:2)

WSDL就是为Web服务生成客户端代理所需的全部内容。不,这不是在WCF时代之前。 WSDL专门为此目的而设计。

最简单的解决方案是使用svcutil创建代码。

使用Web服务的WSDL调用svcutil,然后返回客户端代码及其配置。

然后,您将Web服务的操作作为客户端实例上的方法调用。就这么简单!

例如,我们可以考虑像这样的基本网络服务:http://www.startvbdotnet.com/web/sample2.asmx(它是基于Google服务我公开的网络服务公开的基本数学)。

要为此生成客户端,我会像这样使用svcutil:

svcutil http://www.startvbdotnet.com/web/sample2.asmx?wsdl

此命令将生成Sample.csoutput.config文件(客户端的代码和配置)。

您可以将这些添加到项目中(以及System.ServiceModelSystem.Runtime.Serialization等所需的程序集),现在您可以使用以下代码调用Web服务:

using (SampleSoapClient proxy = new SampleSoapClient())
{
    Console.WriteLine(proxy.Add(6, 2));
    Console.WriteLine(proxy.Substract(6, 2));
    Console.WriteLine(proxy.Divide(6, 2));
    Console.WriteLine(proxy.Multiply(6, 2));
}

WCF让事情变得简单。通过在服务类上使用适当的配置或属性,添加安全性也很简单。