1

我正在使用 Delphi 2007。

使用 WSDL 导入器,我从外部 WSDL 创建了一个包含多个功能的单元。

不幸的是,它不包含返回的 XML 的显式结果类型。

Fi 函数 getHash('login', 'password') 返回以下 XML:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="...........>
  <SOAP-ENV:Body>
    <ns1:getHashResponse>
      <return xsi:type="ns2:Map">
        <item>
          <key xsi:type="xsd:string">code</key>
          <value xsi:type="xsd:string">1004</value>
        </item>
        <item>
          <key xsi:type="xsd:string">error</key>
          <value xsi:type="xsd:string">Login was not successfull</value>
        </item>
      </return>
    </ns1:getHashResponse>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

从这里我一直在尝试定义正确的类。到目前为止,我想出的是:

  TKeyValue = class;

  TArrayofKeyValue = array of TKeyValue;

  TKeyValue = class(TRemotable)
  private
    FKey: String;
    FValue: String;
  published
    property Key:        String        read FKey     write FKey;
    property Value:      String        read FValue   write FValue;
  end;

  function getHash(const uid: WideString; const pwd: WideString): TArrayOfKeyValue; stdcall;

当我使用此代码进行测试时,我确实得到了两个 TKeyValue 实例。但它们都是空的。我的班级定义有什么问题?还是我走错了路?

最好是更好的 WSDL,但这不取决于我。

4

0 回答 0