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:
<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>
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".
Meine Properties sind aber in der importierten Schnittstelle vorhanden, werden aber nicht gefüllt:
Code:
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;
Die Ausschnitte aus der zugehörigen
WSDL sehen so aus:
Code:
<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
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?
Viele Grüße und vielen Dank