如果我想让Delphi Win32应用程序使用.Net webservice,我有哪些选择?
是否可以直接互动?或者我是否必须使用中间人 - 软件与每个COM的Delphi应用程序进行通信?
有问题的Delphi应用程序是用Delphi 2006编写的,但计划很快更新到Delphi XE。
答案 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#的头部,反之亦然。