![]() |
D8 + SOAP-Service + komplexer Response
Hallo,
ich schreibe zur Zeit mit Delphi 8 einen WebService, der mir Datenbank-Funktionalität über's Internet zur Verfügung stellen soll. Eine Methode soll z.B das Ergebnis eines SQL-Selects zurückliefern. Es ist kein Problem, eine Spalte als Rückgabewert der Funktion zurückzugeben. Das funktioniert auch wenn die Antwortmenge aus mehreren Zeilen besteht. Die Funktion ist dann vom Typ ArrayList:
Delphi-Quellcode:
Nun soll aber nicht nur eine Tabellen-Spalte sondern mehrere Spalten als Result zurückgeliefert werden. Ich habe nun versucht anstelle eines Strings ein Object in die ArrayList einzufügen. Das geht auch, allerdings klappt des Versenden des Response an den Client nicht:
function TwsArbeit.get_projekte(us, pw: &String): ArrayList;
var i: Integer; al: ArrayList; begin ... if ds_104005_db1.Tables['projekte'].Rows.Count > 0 then begin al := ArrayList.Create; for i := 1 to ds_104005_db1.Tables['projekte'].Rows.Count do begin al.Add(ds_104005_db1.Tables['projekte'].Rows. Item[i-1]['prj_name'].ToString) end; end; Result := al; end; Ich erhalte folgende Fehlermeldung System.InvalidOperationException: Beim Generieren des XML-Dokuments ist ein Fehler aufgetreten. ---> System.InvalidOperationException: Der Typ arbeitszeit.TArbeitszeitDaten wurde nicht erwartet. Verwenden Sie das XmlInclude- oder das SoapInclude-Attribut, um Typen anzugeben, die nicht statisch sind. at System.Xml.Serialization.XmlSerializationWriter.Wr iteTypedPrimitive(String name, String ns, Object o, Boolean xsiType) at Microsoft.Xml.Serialization.GeneratedAssembly.XmlS erializationWriter1.Write1_Object(String n, String ns, Object o, Boolean isNullable, Boolean needType) at Microsoft.Xml.Serialization.GeneratedAssembly.XmlS erializationWriter1.Write12_ArrayOfAnyType(Object o) --- Ende der internen Ausnahmestapelüberwachung --- at System.Xml.Serialization.XmlSerializer.Serialize(X mlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle) at System.Xml.Serialization.XmlSerializer.Serialize(X mlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces) at System.Xml.Serialization.XmlSerializer.Serialize(T extWriter textWriter, Object o, XmlSerializerNamespaces namespaces) at System.Xml.Serialization.XmlSerializer.Serialize(T extWriter textWriter, Object o) at System.Web.Services.Protocols.XmlReturnWriter.Writ e(HttpResponse response, Stream outputStream, Object returnValue) at System.Web.Services.Protocols.HttpServerProtocol.W riteReturns(Object[] returnValues, Stream outputStream) at System.Web.Services.Protocols.WebServiceHandler.Wr iteReturns(Object[] returnValues) at System.Web.Services.Protocols.WebServiceHandler.In voke() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:14 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 by Thomas Breitkreuz