发布的属性未显示在Delphi Web服务wsdl中

时间:2018-12-06 07:47:12

标签: delphi wsdl

接口文件中的类TMyClass是从其父类TMyRemotable派生的,而父类又是从TRemotable派生的。

生成的WSDL的问题是TMyClass的发布属性未以<complex>类型显示。

请考虑以下代码段:

Sample.pas

TMyRemotable = class(TRemotable)
public
  class function NewInstance: TObject; override;
  destructor Destroy; override;
end;

UserIntf.pas //接口文件

TMyClass = class(TMyRemotable)
private
  FUserName: string;
  FpassWord: string;  
published
  property UserName: string read FUserName write FUserName;
  property Password: string read FpassWord write FpassWord;
end;

我们得到以下输出:

<types>
  <xs:schema xmlns="urn:UserIntf" targetNamespace="urn:UserIntf">
    <xs:complexType name="TMyClass">
      <xs:sequence/>
    </xs:complexType>

预期输出:

<types>
  <xs:schema xmlns="urn:UserIntf" targetNamespace="urn:UserIntf">
    <xs:complexType name="TMyClass">
      <xs:sequence>
        <xs:element name="UserName" type="xs:string"/>
        <xs:element name="PassWord" type="xs:string"/>
      </xs:sequence>

请指导我如何将已发布的属性包括在生成的WSDL文件中。

1 个答案:

答案 0 :(得分:2)

如果希望属性在类型的相应SOAP编码中显示为元素节点或属性,则需要为它们使用一些不同的声明。实际上,它们需要声明为索引属性,如下所示:

published
  property Text: WideString index IS_TEXT read FText write FText;

您可以在Embarcadero的官方文档中阅读有关此内容的更多信息:

Using Remotable Objects