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