AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Webservices (wsdl) und dynamische Arrays
Thema durchsuchen
Ansicht
Themen-Optionen

Webservices (wsdl) und dynamische Arrays

Ein Thema von LuckySpacy · begonnen am 14. Nov 2006 · letzter Beitrag vom 16. Nov 2006
Antwort Antwort
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
LuckySpacy

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

Re: Webservices (wsdl) und dynamische Arrays

  Alt 16. Nov 2006, 08:52
Ich habe ein wenig im Internet recherchiert.
Dabei bin ich auf folgende Links gestoßen:

WSDL Importer does not generate Array types from MaxOccurs="unbounded"

und auf diesen

Delphi 2006 Win32 WSDL Importer not generating Array Types

Dies beschreibt genau das Problem, das ich zur Zeit auch habe.

Wie aus dem Workaround hervorgeht, gibt es bis heute kein bugfix.

Mir scheint, dass das handling mit WSDL in Delphi noch nicht ganz ausgereift ist.

Ich habe mich diesbezüglich auch schon hier dazu geäußert:
Bugs in Webservices von Delphi

Sollte jemand eine Lösung gefunden haben, dann wäre ich dankbar, wenn er dies hier posten würde.
Thomas Bachmann
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz