用VS.NET 2003开发的基于.NET 1.1的WebService,可以用Delphi7正确调用。但同样的方法调用VS.NET 2005开发的基于.NET 2.0的WebService时却发生了错误。查阅资料 http://www.community.borland.com/article/borcon/files/4132/paper/4132.html 发现原来Delphi7客户端虽然支持WebService的RPC|Encoded 和 Document|Literal编码,但 默认的是使用RPC。而.NET 2.0下的WebService却是默认采用Documnet|Literal编码的。因此我们需要显示地声明让Delphi客户端采用Documnet|Literal编码就可以了。在Delphi的WSDL Importer产生了WebService的接口文件中加入如下行:






Delphi端还是按照以前的代码书写即可:
uses
Service;
......
var
a:ServiceSoap;
begin
a :
=
GetServiceSoap;
Caption :
=
a.HelloWorld;
end;





如果需要在WebService中传送汉字的参数,则建议在Service.pas中再添加一行代码




































需要说明的是使用Delphi2006则不需要上述的改变即可以正确调用VS.NET 2005书写的WebService.