AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein SOAP - Methode mit Array-Parameter?
Thema durchsuchen
Ansicht
Themen-Optionen

SOAP - Methode mit Array-Parameter?

Ein Thema von Ralf Kaiser · begonnen am 16. Sep 2019 · letzter Beitrag vom 16. Sep 2019
Antwort Antwort
Benutzerbild von Ralf Kaiser
Ralf Kaiser

Registriert seit: 21. Mär 2005
Ort: Wuppertal
932 Beiträge
 
Delphi 10.3 Rio
 
#1

SOAP - Methode mit Array-Parameter?

  Alt 16. Sep 2019, 13:25
Hallo Hallo,

Wir müssen mit einem Webservice kommunizieren. Dabei spielt unsere Software sowohl Server als auch Client, es können also von der Gegenseite bei uns auch Methoden aufgerufen werden. Der Aufbau dieser Methoden wird allerdings nicht von uns sondern von unserem Partner festgelegt. Wir haben dazu eine WSDL erhalten die wir importiert haben um unseren Server zu erstellen (der WSDL-Import kann ja auch serverseitigen Code erzeugen, letztendlich geht es ja eigentlich nur um die Datentypen)

Eine der Methoden die bei uns aufgerufen werden nimmt ein Array eines bestimmten Datentyps entgegen und soll ein Arry eines anderen Datentyps als Ergebnis liefern.

Die Vorgabe ist, dass es sich um ein "unbound array" handelt bei dem die einzelnen Einträge direkt hintereinander übertragen werden, also nach diesem Muster:

Code:
<method_name>
  <param_array>
     <value1>TEST1</value1>
     <value2>123</value2>
  </param_array>
  <param_array>
     <value1>TEST2</value1>
     <value2>456</value2>
  </param_array>
  <param_array>
     <value1>TEST3</value1>
     <value2>789</value2>
  </param_array>
</method_name>
Wenn dieser Request bei der Delphi-SOAP Runtime ankommt dann werden die Parameter falsch ausgewertet: In diesem Beispiel werden ja 3 Elemente übergeben die jeweils 2 Eigenschaften ahben. Das Array das im Programm ankommt hat aber eine Länge von 2 (also die Anzahl der Eigenschaften eines einzelnen Parameters).

Erst wenn man die eigentlichen Parameter in einem weiteren Tag klammert (hier "<param>") wird die Liste von der SOAP Runtime richtig ausgewertet:

Code:
<method_name>
  <param_array>
     <param>
        <value1>TEST1</value1>
        <value2>123</value2>
     </param>
  </param_array>
  <param_array>
     <param>
        <value1>TEST2</value1>
        <value2>456</value2>
     </param>
  </param_array>
  <param_array>
     <param>
        <value1>TEST3</value1>
        <value2>789</value2>
     </param>
  </param_array>
</method_name>
Kann mir jemand einen Hinweis geben, welche Maßnahmen man ergreifen muss damit Delphi ein "unbound array" so auswertet wie im ersten Beispiel?

Es handelt sich hier aktuell um Delphi Tokyo mit allen Updates.

Vielen Dank schon mal,
Rafl
Ralf Kaiser
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: SOAP - Methode mit Array-Parameter?

  Alt 16. Sep 2019, 16:43
Wie sieht denn der aus dem WSDL generierte Code für die Property aus? Ist im Index IS_UNBD enthalten? Oder ist xoInlineArrays für den Datentyp registriert?
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Benutzerbild von Ralf Kaiser
Ralf Kaiser

Registriert seit: 21. Mär 2005
Ort: Wuppertal
932 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: SOAP - Methode mit Array-Parameter?

  Alt 16. Sep 2019, 17:02
Ja und Ja.

Allerdings handelt es sich nicht um ein Property sondern um den Parameter einer Methode.
Ralf Kaiser
  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 00:52 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