Einleitung
SOAP Nachrichten
SOAP Encoding
SOAP und RPC
SOAP Attachments
JAXM Java API for XML Messaging
Protokoll zum Informationsaustausch (im Web)
Inhalt der Information wird per XML beschrieben
Transport der Information wird per HTTP oder HTTP-EF erledigt
Vorteil: Strukturierte XML-Daten anstelle von bin„ren MIME-Daten
'Historie':
SOAP 1.0 von MS
SOAP 1.1 ist W3C Note vom 8. Mai 2000
SOAP Attachments ist W3C Working Draft
Beispiel: Hallo SOAP Server
POST /HalloServer HTTP/1.1 Host: www.hallo-welt.com Content-Type: text/xml; charset="utf-8" Content-Length: nnnn SOAPAction: "ein URI" <SOAP-ENV:Envelope xmlns:SOAP-ENV = "http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle = "http://schemas.xmlsoap.org/soap/encoding/"> <SOAP-ENV:Body> <m:GetGreeting xmlns:m="ein NS-URI"> <myName>Heinz Kredel</myName> </m:GetGreeting> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
Beispiel: Antwort vom SOAP Server
HTTP/1.1 200 OK Content-Type: text/xml; charset="utf-8" Content-Length: nnnn <SOAP-ENV:Envelope xmlns:SOAP-ENV = "http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle = "http://schemas.xmlsoap.org/soap/encoding/"/> <SOAP-ENV:Body> <m:getGreetingResponse xmlns:m="ein NS-URI"> <message>Hallo Heinz Kredel!</message> </m:GetGreetingResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
Transport in HTTP
neuer HTTP Header SOAPAction: [action-URI]
Content-Type ist text/xml
bei SOAP Fehler muss auch ein HTTP Fehler 500
erzeugt werden und ein Fault
-Element muss in der
Antwort enthalten sein
Arten von SOAP Nachrichten
einfache SOAP Nachrichten
SOAP Nachrichten mit Attachments
verwendete Namensr„ume
xmlns:SOAP-ENV = "http://schemas.xmlsoap.org/soap/envelope/"
xmlns:SOAP-ENC = "http://schemas.xmlsoap.org/soap/encoding/"
SOAP Nachrichten drfen keine DTDs (Document Type Definitions) und keine PIs (Processing INstruction) enthalten
Ein SOAP-Processor (Empf„nger) muss in der Lage sein
alle Teile einer SOAP Nachricht zu identifizieren.
Versteht er einige Teile nicht muss er die Nachricht verwerfen.
Ist der Inhalt nicht fr ihn, muss er seine Teile entfernen und den Inhalt weiterleiten.
eine SOAP Nachricht ist/besteht aus einem SOAP-Envelope
ein SOAP-Envelope besteht aus einem (optionalen) SOAP-Header und einem SOAP-Body, danach drfen weitere (nicht-SOAP) XML-Elemnte folgen
der SOAP-Header dient zur Angabe von speziellen Eigenschaften des SOAP-Bodies
der SOAP-Body enth„lt die eigentliche Nachricht fr den (n„chsten) Empf„nger
es gibt einen default SOAP-Body fr Fehlermeldungen: SOAP-ENV:Fault
der (optionale) Inhalt von SOAP-Header muss mit den richtigen Namensr„umen versehen sein
der Inhalt von SOAP-Body kann(?) mit entsprechenden Namensr„umen versehen sein
XML-ELemente nach SOAP-Body mssen mit den richtigen Namensr„umen versehen sein
alle SOAP Elemente k”nnen ein encodingStyle
Attribut haben
weitere Attribute fr den Inhalt der Header und des Body:
actor = "URI"
definiert den Empf„nger
des Elements
mustUnderstand = "1"
verlangt, dass der Empf„nger die Bedeutung des Elements
voll versteht, falls nicht, wird die Nachricht verworfen
allgemeinste Form eines SOAP-Envelopes
<SOAP-ENV:Envelope xmlns:SOAP-ENV = "NS-URI" encodingStyle = "NS-URI" > <SOAP-ENV:Header> Header Inhalt </SOAP-ENV:Header> <SOAP-ENV:Body> Body Inhalt </SOAP-ENV:Body> <xxx:other xmlns:xxx = "NS-URI" > anderer Inhalt </xxx:other> </SOAP-ENV:Envelope>
<SOAP-ENV:Body> <SOAP-ENV:Fault> <faultcode>SOAP-ENV:Server</faultcode> <faultstring>Beschreibung</faultstring> <faultactor>actor-URI</faultactor> <detail> <e:message xmlns:e="ein NS-URI"> Kann das Element xxx nicht verarbeiten. </e:message> </detail> </SOAP-ENV:Fault> </SOAP-ENV:Body>
Fehler-Codes in faultcode
sind analog zu
HTTP 1xx, 2xx, 3xx, 4xx, 5xx Codes:
versionMismatch
:
Namensr„ume passen nicht
mustUnderstand
:
kann ein solches Element nicht verstehen
Client
:
die Anfrage war Fehlerhaft,
hatte nicht die korrekte Authentifizierung, etc.
Server
:
der Server konnte die Nachricht nicht verarbeiten
oder weiterleiten
ein einfaches Typ-System zur Beschreibung der bertragenen Daten
alles was mit XML Schema definierbar ist kann bertragen werden
verwendete Schema Namensr„ume
xmlns:xsd = "http://www.w3.org/1999/XMLSchema"
xmlns:xsi = "http://www.w3.org/1999/XMLSchema-instance"
im Zweifelsfall oder fr bessere Effizienz k”nnen entsprechende 'SOAP-ENC' Attribute den Typ genauer beschreiben
einfache Datentypen: int, float, String, Enumeration, Byte Arrays; z.B.
<betrag xsi:type="xsd:float">29.95</betrag>oder auch nur
<betrag>29.95</betrag>
zusammengesetzte Datentypen: Struct, Array; z.B.
<zahlenFeld SOAP-ENC:arrayType="xsd:int[2]"> <zahl>3</zahl> <zahl>5</zahl> </zahlenFeld>
Funktionsaufrufe werden im SOAP-Body als zusammengesetzter Datentyp bertragen.
z.B.
<methodName> <arg1Name>3</arg1Name> <arg2Name>5</arg2Name> <arg3Name>7</arg3Name> </methodName>
Untersttzt SOAP und SOAP mit Attachments.
Untersttzt ebXML: e-bussines-XML.
© Universität Mannheim, Rechenzentrum, 1998-2002.
Heinz Kredel Last modified: Fri Dec 28 17:28:04 MET 2001