AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein XML Delphi WSDL - Benutzen des soap:header Attributes für Sessions
Thema durchsuchen
Ansicht
Themen-Optionen

WSDL - Benutzen des soap:header Attributes für Sessions

Ein Thema von jwilhelm · begonnen am 3. Jul 2004 · letzter Beitrag vom 30. Sep 2019
Antwort Antwort
jwilhelm

Registriert seit: 3. Jul 2004
2 Beiträge
 
#1

WSDL - Benutzen des soap:header Attributes für Sessions

  Alt 3. Jul 2004, 14:45
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:
<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>
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.

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
  Mit Zitat antworten Zitat
jwilhelm

Registriert seit: 3. Jul 2004
2 Beiträge
 
#2

Re: WSDL - Benutzen des soap:header Attributes für Sessions

  Alt 7. Jul 2004, 08:10
Hi,

habs inzwischen selbst rausgefunden.

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.



Gruss Jürgen
  Mit Zitat antworten Zitat
fisipjm

Registriert seit: 28. Okt 2013
251 Beiträge
 
#3

AW: WSDL - Benutzen des soap:header Attributes für Sessions

  Alt 30. Sep 2019, 15:22
Hi Jürgen,

ich weis dein Post ist schon ein gutes Stückchen her 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
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: WSDL - Benutzen des soap:header Attributes für Sessions

  Alt 30. Sep 2019, 15:46
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.
Windows Vista - Eine neue Erfahrung in Fehlern.
  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 23:13 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