Einzelnen Beitrag anzeigen

jwilhelm

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

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

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