delphi调用webservice 转

如今 Web Service 已越来越火了,在DotNet已开发的Web Service中,Delphi 7如何方便的调用DotNet写的Web Service呢?

方法有两种,一种是在Delphi 7中WSDLImp工具将DotNet写的Web Service转化为Interface 单元文件,另一种方法是用MS 提供的 Microsoft Soap Toolkit(MSST) 工具。

下面是用WSDLImp工具调用C# 写一个简单的 Web Service:

启动 VS.Net工具,在C#项目中,选择 ASP.Net Web服务,在代码中写入

[WebMethod]

public double add(double s1, double s2)

{

return s1+s2;

}

生成配件后,在IE 中输入 http://localhost/ASPNETWS/Service1.asmx

会看到 有一个 add 的链接,点击进入,并调用测试:

如,输入 s1为 34, s2为 235.34 调用后为

<?xml version="1.0" encoding="utf-8" ?>

<double xmlns="http://tempuri.org/">269.34000000000003</double>

输入 http://localhost/ASPNETWS/Service1.asmx?WSDL,可看到WSDL单元

测试成功后,在Delphi 7的Bin目录找到 WSDLImp.exe工具,并拷到一处,

在 命令提示符 中输入 WSDLImp http://localhost/ASPNETWS/Service1.asmx?WSDL

会在当前目录中生成一个 Service.pas 文件,这就是要在Delphi中使用的Interface文件。

启动Delphi 7,新建 Application工程,放入一个TButton组件;

在uses 中加入 InvokeRegistry, Rio, SOAPHTTPClient, Service1;

procedure TForm1.btn_CShapWSClick(Sender: TObject);

var

WSResult: Double;

WSIServer: Service1Soap;

begin

WSIServer:= GetService1Soap(true,'',HTTPRIO1);

WSResult:= WSIServer.add(23,342.234);

showmessage('WSResult: '+ FloatToStr(WSResult));

end;