![]() |
SOAP / WSDL Complexe Strukturen werden nicht in Delphi übernommen
Hallo,
Ich versuche gerade einen Webservice mit Delphi anzusprechen. Die WSDL Datei habe ich über den Delphi WSDL Importer importiert und hat mir (auf den ersten Blick) eine valide PAS Datei erzeugt. Ich kann den Webservice auch ansprechen, jedoch habe ich Probleme bei Elementen, die noch Attribute enthalten. Diese Attribute werden einfach nicht übernommen. Hier ein Beispiel, eine Antwort vom Webservice sieht z.B. so aus:
Code:
Code wird auf der Clientseite richtig mit "1" gefüllt. Aus der Knoten "Zusatz" bekomme ich aber keine Werte für "bla", "foo" und "bar".
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header/> <soapenv:Body> <n:StatusResponse n:result="0" xmlns:n="http://www.xyz/service.xsd"> <n:Id>?</n:Id> <n:SeqNo>?</n:SeqNo> <n:User/> <Status> <n:Code>1</n:Code> <Zusatz n:bla="1" n:foo="0" n:bar="HalloWelt"/> </Status> </n:StatusResponse> </soapenv:Body> </soapenv:Envelope> Meine Properties sind aber in der importierten Schnittstelle vorhanden, werden aber nicht gefüllt:
Code:
Die Ausschnitte aus der zugehörigen WSDL sehen so aus:
Zusatz = class(TRemotable)
private [..] published property bla: bla Index (IS_ATTR or IS_OPTN) read Fbla write Setbla stored bla_Specified; property foo: food ..... end;
Code:
Ich habe im Internet schon einige Aussagen gelesen, dass Delphi mit ComplexenTypen und Attributen nicht umgehen kann, stimmt das? Gibt es einen Workarround dafür?
<xsd:complexType name="ZusatzTyp">
<xsd:sequence> </xsd:sequence> <xsd:attribute ref="xsd1:bla"/> <xsd:attribute ref="xsd1:foo"/> <xsd:attribute ref="xsd1:bar"/> </xsd:complexType> [..] <xsd:complexType name="StatusType"> <xsd:sequence> <xsd:element ref="xsd1:Code" minOccurs="1" maxOccurs="1"/> <xsd:element name="Zusatz" type="xsd1:ZusatzTyp" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType Viele Grüße und vielen Dank :) |
AW: SOAP / WSDL Complexe Strukturen werden nicht in Delphi übernommen
Ja ist leider so und es ist traurig, dass sich hier keine Besserung abzeichnet. Versuch es doch mal mit diesem WSDL Importer hier:
![]() EDIT: Ich meinte wohl das X2XMLDatabinding Projekt. Inwiefern das hier hilft, weiss ich leider nicht. Siehe auch hier: ![]() |
AW: SOAP / WSDL Complexe Strukturen werden nicht in Delphi übernommen
Guten Abend,
Vielen Dank. Ich habe den Importer versucht. Er funktioniert zwar beim Mapping, bring dafür andere Probleme mit sich. Ich habe die original Soap Implementation in Delphi debuggt, das Problem scheinen die Prefixe "n:" zu sein. Steht es bei einem Knoten davor, wie bei: n:Code ist es kein Problem. Steht es bei einem Attribut in einem Knoten davor, wird das Attribut nicht gefunden, weil die Soap Implementation sucht dann nach "bla", findet aber nichts weil es ja "n:bla" heisst. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:39 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