![]() |
WSDL - Benutzen des soap:header Attributes für Sessions
Hallo,
ich versuche momentan einen Webservice Client mit Delphi 7 zu erstellen. Hierfür lese ich folgende WSDL Datei mit dem WSDL Importer ein um die Proxy Klassen zu erstellen.
XML-Code:
Ich Benutze innerhalb des Bindings das soap:header Element um einen Timestamp, ein Username und ein Passwort im SOAP Header zu versenden. Die SOAP Nachricht, die allerdings durch die Proxy Klassen generiert wird, enthält sämtliche Daten im Body der Nachricht und nicht im Header.
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://tempuri.org/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" targetNamespace="http://tempuri.org/" name="BusinessBeanService">
<message name="methodHeader"> <part name="SID" type="xs:string"/> </message> <message name="loginRequest"> <part name="TimeStamp" type="xs:dateTime"/> <part name="UserName" type="xs:string"/> <part name="Password" type="xs:string"/> </message> <message name="loginResponse"> <part name="SessionID" type="xs:string"/> </message> <portType name="BusinessBean"> <operation name="login"> <input message="tns:loginRequest"/> <output message="tns:loginResponse"/> </operation> </portType> <binding name="BusinessBeanbinding" type="tns:BusinessBean"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="login"> <soap:operation soapAction="urn:BusinessBean#login" style="document"/> <input> <soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:BusinessBean"/> <soap:header message="tns:loginRequest" part="header" use="literal"/> </input> <output> <soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:BusinessBean"/> <soap:header message="tns:loginResponse" part="header" use="literal"/> </output> </operation> </binding> <service name="BusinessBeanservice"> <port name="BusinessBeanPort" binding="tns:BusinessBeanbinding"> <soap:address location="http://..."/> </port> </service> Kann mir irgend jemand erklären was an der WSDL Beschreibung falsch ist? Ich hoffe ich habe das Thema im richtigen Thread gepostet. Ich denke WSDL passt am besten zum Thema XML. Vielen Dank im vorraus. Gruss Jürgen |
Re: WSDL - Benutzen des soap:header Attributes für Sessions
Hi,
habs inzwischen selbst rausgefunden. :lol: Wen es interessiert: Die WDSL Beschreibung ist korrekt. Der Header muss in Delphi allerdings separat versendet werden. Hierfür castet man eine Instanz des IInvokable Interface, welches Delphi durch die WSDL erstellt hat, als ISOAPHeaders und führt darauf die Methode Send(TSoapHeader) aus. :wall: Gruss Jürgen |
AW: WSDL - Benutzen des soap:header Attributes für Sessions
Hi Jürgen,
ich weis dein Post ist schon ein gutes Stückchen her :lol: aber Probleme werden ja bekanntlich nicht älter man gewöhnt sich nur dran.... Ich stehe aktuell exakt vor dem gleichen Problem. Habe eine WSDL die ich, wenn ich Sie importiert habe, mit die entsprechenden Klassen liefert. In der Klasse gibt es ein Login mit Benutzer, Passwort und Mandant, worauf ich als Antwort eine UUID "xsd:String" im Header als Session vom Server bekomme. Nach Ende des Aufrufs muss ein Release erfolgen, leider schmeist mir der Server da die Fehlermeldung UUID nicht übergeben und wenn ich den Wireshark anwerfe, dann stimmt das auch, Mein aufruf erzeugt kein Header Bereich. Hast du zufällig einen kleinen Codeschnippsel deiner damaligen Lösung übrig? Gruß PJM |
AW: WSDL - Benutzen des soap:header Attributes für Sessions
Die Implementierung von neuen Delphi-Versionen hat auch nichts mehr mit der Implementierung von alten Versionen zu tun.
Also am besten neue Beitrag erstellen und WICHTIG die Delphi-Version angeben. Da es eine (kostenlose) Community-Edition gibt, am besten das damit auch mal prüfen, ob das Problem immer noch vorhanden ist. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:20 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