AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi SOAP / WSDL Complexe Strukturen werden nicht in Delphi übernommen
Thema durchsuchen
Ansicht
Themen-Optionen

SOAP / WSDL Complexe Strukturen werden nicht in Delphi übernommen

Ein Thema von OlliWW · begonnen am 9. Sep 2021 · letzter Beitrag vom 14. Sep 2021
Antwort Antwort
OlliWW

Registriert seit: 31. Aug 2011
159 Beiträge
 
#1

SOAP / WSDL Complexe Strukturen werden nicht in Delphi übernommen

  Alt 9. Sep 2021, 21:56
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
  Mit Zitat antworten Zitat
Rolf Frei

Registriert seit: 19. Jun 2006
647 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: SOAP / WSDL Complexe Strukturen werden nicht in Delphi übernommen

  Alt 10. Sep 2021, 14:51
Ja ist leider so und es ist traurig, dass sich hier keine Besserung abzeichnet. Versuch es doch mal mit diesem WSDL Importer hier: https://sourceforge.net/projects/net...er-for-delphi/ Kenne diesen aber selber nicht und weiss nicht wie seriös das ganze ist. Habe dass nur mal per Google gefunden. Ich bin eigentlich der Meinung, dass es da von der Community ein neuer WSDL Import gemacht wurde, finde aber im Moment nichts mehr dazu. Ob der Link irgendwas damit zu tun hat weiss ich nicht.

EDIT: Ich meinte wohl das X2XMLDatabinding Projekt. Inwiefern das hier hilft, weiss ich leider nicht. Siehe auch hier: https://www.delphipraxis.net/207493-xsd-delphi.html

Geändert von Rolf Frei (10. Sep 2021 um 15:04 Uhr)
  Mit Zitat antworten Zitat
OlliWW

Registriert seit: 31. Aug 2011
159 Beiträge
 
#3

AW: SOAP / WSDL Complexe Strukturen werden nicht in Delphi übernommen

  Alt 14. Sep 2021, 22:59
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.
  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 17:28 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