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

发布于 2024-11-04 16:03:22 字数 147 浏览 1 评论 0原文

如果我想启用Delphi Win32应用程序以消费.NET Web服务,我该选择什么?

可以直接互动吗?还是我必须求助于每次COM的中间人软件?

所讨论的Delphi应用程序是在2006年Delphi编写的,但计划很快将其更新为Delphi Xe。

What options do I have if I want to enable a Delphi Win32 application to consume a .Net webservice?

Is it possible to interact directly? Or do I have to resort to a middleman-software communicating to the Delphi application per COM for instance?

The Delphi application in question is written in Delphi 2006 but is planned to be updated to Delphi XE soon.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

一个人的夜不怕黑 2024-11-11 16:03:22

当您的项目在 Delphi IDE 中打开时,转到:

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

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

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

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

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

While your project is open in Delphi IDE, go to:

File | New | Other... | Delphi Projects | WebServices | WSDL Importer

Now WSDL importer wizard will start. Type in WSDL address for your webservice, and press Next. It will show you different options about how to process the WSDL. You can change the options if needed. Eventually, when the wizard is finished, you will have a new unit in your project which contains client-side wrapper classes and interfaces for your webservice. Now you can use this class in different ways.
The simplest method is to call a function which is named Get(Your_WebService_Name). For example if your webservice name is TestWebService, the function will be named GetTestWebService.

The function will return an interface which represents the same interface as your webservice, now you can call the methods of this interface, and it will automatically transfer the request to the remote server, and return the result back to you. An example source code could look like this:

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

Another option is that you setup a THttpRio object manually, and use it. Actually that is what that Get(Your_WebService_Name) function does internally.

忆悲凉 2024-11-11 16:03:22

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

Just add the line InvRegistry.RegisterInvokeOptions(TypeInfo(xxx), ioDocument); to your initialize section of the generated imported file. It will work as a charm.
NOTE: xxx must be replaced with your imported web service class name.

冰之心 2024-11-11 16:03:22

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

This doesn't work with C# web service, period. Delphi client doesn't understand the header of C# and vice versa.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文