gpt4 book ai didi

web-services - Delphi Web 服务如何工作? (在运行时添加方法??)

转载 作者:行者123 更新时间:2023-12-03 15:55:17 25 4
gpt4 key购买 nike

我已经使用 WSDL 导入器在 Delphi XE 中创建了 Web 服务。Delphi 为我生成模块 ITransmitter1.pasITransmitter接口(interface)和GetITransmitter函数。

要使用我使用的网络服务:

var Transmitter: ITransmitter;
begin
Transmitter := GetITransmitter(True, '', nil);
Transmitter.Transmit(Memo1.Text, OutXML);
end;

但我在任何地方都看不到 Transmit 方法的主体...

在 ITransmitter.pas 中我看到:

  InvRegistry.RegisterInterface(TypeInfo(ITransmitter), 'urn:TransmitterIntf-ITransmitter', 'utf-8');
InvRegistry.RegisterDefaultSOAPAction(TypeInfo(ITransmitter), 'urn:TransmitterIntf-ITransmitter#Transmit');

如果我评论这一行,我会收到“接口(interface)不支持”错误。正如我在这里看到的,delphi 正在运行时添加方法!它是如何工作的 ?我可以在运行时将方法添加到我自己的类中吗?

最佳答案

如果您使用 WSDL 导入器创建了 Web 服务客户端,则生成的客户端代码将调用服务器上的方法。所以实际上,方法“body”(代码)位于Web服务服务器上。

Delphi 基于 WSDL 生成 Soap 请求,并在后台使用 RTTI(内省(introspection))以 XML 形式生成 Web 服务调用的参数等。该 XML 被发送到服务器,服务器执行方法实现并发回 Soap 响应。

如果您创建 Web 服务服务器,情况则相反,在这种情况下,Delphi 应用程序当然需要实现所有方法体。

关于web-services - Delphi Web 服务如何工作? (在运行时添加方法??),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5549253/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com