2011-09-15 75 views
0

对象我有一个需要通过SOAP为基于Java的系统交互的.NET Web应用程序。Web服务/ WCF新手:创建WCF代理客户端/对基于Java的SOAP Web服务

我没有比一些基本的WCF其他Web服务的工作,并希望有这方面的指导。

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

示例代码只要使用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); 

有什么建议吗? 谢谢!

回答

2

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

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

您可以使用Web服务的WSDL调用svcutil,并返回客户端代码以及其配置。

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

例如,让我们考虑一个像这样的基本Web服务:http://www.startvbdotnet.com/web/sample2.asmx(这是我通过谷歌搜索发现的作为Web服务的基本数学公式)。

要生成该客户端我会使用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使事情变得简单。在服务类中使用适当的配置或属性,增加安全性也很简单。