Einzelnen Beitrag anzeigen

LuckySpacy

Registriert seit: 2. Apr 2003
Ort: Fränkisch-Crumbach
50 Beiträge
 
Delphi 10.4 Sydney
 
#1

Webservices (wsdl) und dynamische Arrays

  Alt 14. Nov 2006, 17:46
Ich möchte über eine vorhandene wsdl-Datei Daten versenden.
Dazu habe ich die wsdl-Datei in Delphi 7 übernommen.

Unter anderem wurde folgendes generiert:
Delphi-Quellcode:
  
  WarrantyArticle = class(TRemotable)
  private
    FarticleNumber: WideString;
    FrequestedAmount: Integer;
  published
    property articleNumber : WideString read FarticleNumber write FarticleNumber;
    property requestedAmount: Integer read FrequestedAmount write FrequestedAmount;
  end;

  WarrantyApplication = class(TRemotable)
  private
    FapplicantName : WideString;
    Farticle : WarrantyArticle;
  public
    destructor Destroy; override;
   published
    property applicantName : WideString read FapplicantName write FapplicantName;
    property article : WarrantyArticle read Farticle write Farticle;
  end;
Übertragen wird dann sowas:

<applicantName>ApplicantName</applicantName>
- <article>
<articleNumber>9022 371 1020</articleNumber>
<requestedAmount>5</requestedAmount>
</article>

Soweit funktioniert das ganze auch einwandfrei.
Nur in der wsdl-Datei steht bei Article, dass es sich hierbei um einen Array handelt.
Irgendwie hat mir Delphi das hier falsch übersetzt.
Denn wie soll ich hierbei mehrere Datensätze übertragen?

Deshalb habe ich das ganze etwas angepasst.

Delphi-Quellcode:
  WarrantyArticle = class(TRemotable)
  private
    FarticleNumber: WideString;
    FrequestedAmount: Integer;
  published
    property articleNumber : WideString read FarticleNumber write FarticleNumber;
    property requestedAmount: Integer read FrequestedAmount write FrequestedAmount;
  end;

  ArticleArray = array of WarrantyArticle; // wurde von mir hinzugefügt

  WarrantyApplication = class(TRemotable)
  private
    FapplicantName : WideString;
    FArticleArray : ArticleArray;
  public
    destructor Destroy; override;
   published
    property applicantName : WideString read FapplicantName write FapplicantName;
    property article : ArticleArray read FArticleArray write FArticleArray; // geändert
  end;
Wenn ich das ganze jetzt ordentlich fülle, dann kommt dabei sowas raus:

<applicantName>ApplicantName</applicantName>
- <article>
- <WarrantyArticle>
<articleNumber>9022 371 1020</articleNumber>
<requestedAmount>5</requestedAmount>
</WarrantyArticle>
- <WarrantyArticle>
<articleNumber>0000 988 5211</articleNumber>
<requestedAmount>1</requestedAmount>
</WarrantyArticle>
</article>

Hier bekomme ich eine Fehlermeldung:
WarrantyArticle kann nicht entserialisiert werden.

Was ich auch verstehen kann. Denn ich brauche folgenden Aufbau:

<applicantName>ApplicantName</applicantName>
- <article>
<articleNumber>9022 371 1020</articleNumber>
<requestedAmount>5</requestedAmount>
</article>
- <article>
<articleNumber>0000 988 5211</articleNumber>
<requestedAmount>1</requestedAmount>
</article>

Also nix mit WarrantyArticle.
Egal was und wie ich es auch versuche, ich bekomme diesen Aufbau nicht hin.
Kann mir jemand dabei helfen?
Thomas Bachmann
  Mit Zitat antworten Zitat