如何从Delphi Win32应用程序访问.Net Web服务?

时间:2011-05-04 09:07:34

标签: .net web-services delphi winapi com

如果我想让Delphi Win32应用程序使用.Net webservice,我有哪些选择?

是否可以直接互动?或者我是否必须使用中间人 - 软件与每个COM的Delphi应用程序进行通信?

有问题的Delphi应用程序是用Delphi 2006编写的,但计划很快更新到Delphi XE。

3 个答案:

答案 0 :(得分:12)

在Delphi IDE中打开项目时,请转到:

文件|新的|其他...... |德尔福项目| Web服务| WSDL导入器

现在将启动WSDL导入程序向导。键入Web服务的WSDL地址,然后按“下一步”。它将向您展示有关如何处理WSDL的不同选项。如果需要,您可以更改选项。最后,当向导完成后,您的项目中将有一个新单元,其中包含客户端包装器类和Web服务接口。现在您可以以不同的方式使用此类。 最简单的方法是调用名为Get(Your_WebService_Name)的函数。例如,如果您的Web服务名称是TestWebService,则该函数将命名为GetTestWebService。

该函数将返回一个代表与webservice相同接口的接口,现在您可以调用此接口的方法,它将自动将请求传输到远程服务器,并将结果返回给您。示例源代码可能如下所示:

var
  MyTestService: ITestService;
begin
  MyTestService := GetTestService();
  MyTestService.TestMethod;
end;

另一个选择是手动设置THttpRio对象并使用它。实际上,这就是Get(Your_WebService_Name)函数在内部执行的操作。

答案 1 :(得分:1)

只需将行InvRegistry.RegisterInvokeOptions(TypeInfo(xxx), ioDocument);添加到生成的导入文件的初始化部分即可。它将作为一种魅力 注意:xxx必须替换为导入的Web服务类名称。

答案 2 :(得分:0)

这不适用于C#Web服务期间。 Delphi客户端不理解C#的头部,反之亦然。