![]() |
Webservices (wsdl) und dynamische Arrays
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:
Übertragen wird dann sowas: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; <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:
Wenn ich das ganze jetzt ordentlich fülle, dann kommt dabei sowas raus:
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; <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? |
Re: Webservices (wsdl) und dynamische Arrays
Ich habe ein wenig im Internet recherchiert.
Dabei bin ich auf folgende Links gestoßen: ![]() und auf diesen ![]() 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: ![]() Sollte jemand eine Lösung gefunden haben, dann wäre ich dankbar, wenn er dies hier posten würde. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz