如何在Delphi WebService中公开复杂类型

时间:2011-07-12 09:57:55

标签: delphi soap types complextype

我遇到了通过SOAP WebService公开DTO类的问题。

我的班级看起来像

TKontrahent = class
public
    Imie : string;
    Nazwisko : string;
    Id : integer;
end; 

这是服务代码:

TKontrahentService = class(TInvokableClass, IKontrahentService)
public
    function Dodaj( kontrahnet : TKontrahent)  : integer; stdcall;
    function Aktualizuj ( kontrahent : TKontrahent) : integer; stdcall;
    function Usun ( kontrahent : TKontrahent) : integer; stdcall;
    function Nowy : TKontrahent; stdcall;
end;

如何在WSDL中发布类型:

<types>
  <xs:schema targetNamespace="urn:Kontrahent" xmlns="urn:Kontrahent">
    <xs:complexType name="TKontrahent">
      <xs:sequence/>
    </xs:complexType>
  </xs:schema>
</types>

我会感谢任何建议。我找不到任何更复杂类型的样本。 最好的祝福, krlm

1 个答案:

答案 0 :(得分:7)

要在标准Delphi SOAP服务中公开和使用类TKontrahent,它必须是TRemotable的子类,并且必须发布其属性。

作为一个起点(例如在从Delphi 7迁移到2009之后),我通常会导入一个现有的WSDL来创建一个SOAP客户端,并研究生成的类和属性的源代码。