cache cache cache cache cache cache cache cache cache cache cache cache cache cache cache cache cache cache
 

Grundlagen - SOAP

Drucken
Simple Object Access Protocol (SOAP)
Geschrieben von: Christian Jänicke
Samstag, 23. Januar 2010

WebServices verwenden das Simple Object Access Protocol (SOAP) als Kommunktationsprotokoll. SOAP ist ein auf XML basierendes Format, um Nachrichten zu versenden und ist sowohl Plattform- wie auch Sprachunabhängig.

Aufbau einer SOAP-Nachricht

Eine SOAP-Nachricht ist eine einfache XML-Struktur, die folgende Elemente enthält bzw. enthalten kann:

  • ein Envelope Element
  • ein Header Element (optional)
  • ein Body Element mit optionalem Fault Element

Desweiteren unterliegen SOAP-Nachrichten bestimmten Einschränkungen, die im Folgenden zusammengefasst sind:

  • Jede SOAP-Nachricht muss ein gültiges XML-Dokument sein
  • Alle SOAP-Elemente müssen in folgendem Namespace deklariert sein: http://www.w3.org/2001/12/soap-envelope/
  • Alle SOAP-Datentypen müssen in folgendem Namensraum deklariert sein: http://www.w3.org/2001/12/soap-encoding/
  • In einer SOAP-Nachricht darf keine Dokumenttyp-Deklaration (DTD) enthalten sein
  • In einer SOAP-Nachricht dürfen keine XML Processing Instructions enthalten sein

Beispiel:

<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding/">
  <soap:Header>
    ...
  </soap:Header>
  <soap:Body>
    ...
  </soap:Body>
</soap:Envelope>

Element: Envelope

Das Envelope Element ist das Wurzelelement einer SOAP-Nachricht und darf nur einmal pro Nachricht definiert werden. Jede SOAP-Nachricht muss ein Envelope Element enthalten.

Element: Header

Das Header Element ist optional und muss, sofern angegeben, das erste Element innerhalb des Envelope Elements sein. Im Header Element können beliebige Einträge abgelegt werden. Typischer weise enthalten Header Elemente Transaktionsdaten, Zugriffsdaten (Benutzername, Kennwort) oder Routinginformationen. Die Header Einträge müssen durch einen eigenen Namensraum (Namespace) deklariert werden.

<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding/"
    xmlns:myapp="http://www.bitworld.de/myapp/">
  <soap:Header>
    <myapp:Authentication>
      <myapp:Username>chris</myapp:Username>
      <myapp:Password>encrypted</myapp:Password>
    </myapp:Authentication>
  </soap:Header>
  <soap:Body>
    ...
  </soap:Body>
</soap:Envelope>

In dem Header Element können die Einträge durch zusätzliche SOAP-Attribute spezifiziert werden.

Attribut (Header Eintrag): actor

Eine SOAP-Nachricht kannüber verschiedene Knotenpunkte (Server) weitergereicht werden. Mit den Attribut actor kann ein Header Eintrag für einen bestimmten Knotenpunkt zur Auswertung markiert werden, d.h. nur der angegebene Knoten darf den Eintrag auswerten, alle anderen Knoten müssen diesen ignorieren. Der Attributwert ist entweder der URI des Knotenpunkttes, für den der Eintrag bestimmt ist, oder der reserviert URI http://schemas.xmlsoap.org/soap/action/next , welcher den aktuellen Knoten zur Auswertung des Header Eintrag auffordert.

Hat der aktuelle Knoten den Header Eintrag ausgeführt und ist er nicht der Zielknoten der SOAP-Nachricht, so werden alle für den aktuellen Knoten bestimmten Header Einträge aus der Nachricht entfernt und die Nachricht wird an den nächsten Knoten weitergeleitet.

<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding/"
    xmlns:myapp="http://www.bitworld.de/myapp/">
  <soap:Header>
    <myapp:Authentication soap:actor="http://www.bitworld.de/auth/">
      <myapp:Username>chris</myapp:Username>
      <myapp:Password>encrypted</myapp:Password>
    </myapp:Authentication>
  </soap:Header>
  <soap:Body>
    ...
  </soap:Body>
</soap:Envelope>

Attribut (Header Eintrag): mustUnderstand

Mit dem Attribut mustUnderstand kann ein Header Eintrag als zwingend notwendig gekennzeichnet werden. Der Empfänger der SOAP-Nachricht muss diesen Header Eintrag auswerten können, sonst muss der Empfänger die Nachricht ablehnen. Ein Wert von 1 kennzeichnet den Eintrag als zwingend notwendig, ein Wert von 0 kennzeichnet den Eintrag als optional.

Attribut (Header Eintrag): encodingStyle

Das Attribut encodingstyle definiert die Datentypen, die für den angegebenen Header Eintrag gültig sind.

Element: Body

In dem Body Element ist die eigentliche Nachricht enthalten. Alle Elemente der Nachricht sollten durch einen eigenen Namensraum gekennzeichnet werden.

<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding/"
    xmlns:myapp="http://www.bitworld.de/myapp/">
  <soap:Body>
    <myapp:SayHello>
      <myapp:Name>Christian</myapp:Name>
    </myapp:SayHello>
  </soap:Body>
</soap:Envelope>

Element: Fault

Es gibt ein spezielle Element, welches im Body angegeben werden kann: das Fault Element. Fault Elemente kennzeichnen Fehler, die bei der Verarbeitung der Nachricht aufgetreten sind. Folglich werden Fault Elementüberlicherweise in Antwort-Nachrichten angegeben, um den Sender der Nachrichtüber aufgetretene Fehler zu informieren.

Das Fault Element verfügtüber vier weitere Unterelemente:

Element (Fault): faultcode

Das Element faultcode gibt den Fehlercode des Fehlers an, der Aufgetreten ist. Es gibt vier mögliche Wert:

VersionMismatch Zeigt an, dass für das Envelope Element ein ungültiger Namensraum angegeben wurde. (Der Namensraum definiert die SOAP Version)
MustUnderstand Ein mit dem Attribut mustUnderstand gekennzeichneter Header Eintrag kann von dem aktuellen Knoten nicht verarbeitet werden.
Client Die SOAP-Nachricht konnte nicht verarbeitet werden.
Server Es ist ein interner Server-Fehler aufgetreten.

Element (Fault): faultstring

In dem Element faultstring kann eine Fehlerbeschreibung angegeben werden.

Element (Fault): faultactor

Das Element faultactor enthält die URI des Knotens, bei dem der Fehler aufgetreten ist.

Element (Fault): detail

In dem Element detail können zusätzliche Informationen zum Fehler angegeben werden (auch in XML-Form).

<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding/"
    xmlns:myserver="http://www.bitworld.de/myserver/">
  <soap:Body>
    <soap:Fault>
      <soap:faultcode>Server<soap:/faultcode>
      <soap:faultstring>Too few parameters<soap:/faultstring>
      <soap:detail>
        <myserver:details>
          <myserver:message>Please enter your name</myserver:message>
        </myserver:details>
      </soap:detail>
    </soap:Fault>
  </soap:Body>
</soap:Envelope>
Zuletzt aktualisiert am Samstag, 23. Januar 2010

Impressum

Impressum

Haftungsausschluss

(1) Haftungsbeschränkung

Inhalte dieser Website

Die Inhalte dieser Website werden mit größtmöglicher Sorgfalt erstellt. Der Anbieter übernimmt jedoch keine Gewähr für die Richtigkeit, Vollständigkeit und Aktualität der bereitgestellten Inhalte. Die Nutzung der abrufbaren Inhalte erfolgt auf eigene Gefahr des Nutzers. Namentlich gekennzeichnete Beiträge geben die Meinung des jeweiligen Autors und nicht immer die Meinung des Anbieters wieder.

Verfügbarkeit der Website

Der Anbieter wird sich bemühen, den Dienst möglichst unterbrechungsfrei zum Abruf anzubieten. Auch bei aller Sorgfalt können aber Ausfallzeiten nicht ausgeschlossen werden. Der Anbieter behält sich das Recht vor, sein Angebot jederzeit zu ändern oder einzustellen.

Externe Links

Diese Website enthält Verknüpfungen zu Websites Dritter ("externe Links"). Diese Websites unterliegen der Haftung der jeweiligen Betreiber. Der Anbieter hat bei der erstmaligen Verknüpfung der externen Links die fremden Inhalte daraufhin überprüft, ob etwaige Rechtsverstöße bestehen. Zu dem Zeitpunkt waren keine Rechtsverstöße ersichtlich. Der Anbieter hat keinerlei Einfluss auf die aktuelle und zukünftige Gestaltung und auf die Inhalte der verknüpften Seiten. Das Setzen von externen Links bedeutet nicht, dass sich der Anbieter die hinter dem Verweis oder Link liegenden Inhalte zu Eigen macht. Eine ständige Kontrolle dieser externen Links ist für den Anbieter ohne konkrete Hinweise auf Rechtsverstöße nicht zumutbar. Bei Kenntnis von Rechtsverstößen werden jedoch derartige externe Links unverzüglich gelöscht.

Werbeanzeigen

Für den Inhalt der Werbeanzeigen ist der jeweilige Autor verantwortlich, ebenso wie für den Inhalt der beworbenen Website. Die Darstellung der Werbeanzeige stellt keine Akzeptanz durch den Anbieter dar.

Kein Vertragsverhältnis

Mit der Nutzung der Website des Anbieters kommt keinerlei Vertragsverhältnis zwischen dem Nutzer und dem Anbieter zustande. Insofern ergeben sich auch keinerlei vertragliche oder quasivertragliche Ansprüche gegen den Anbieter. Für den Fall, dass die Nutzung der Website doch zu einem Vertragsverhältnis führen sollte, gilt rein vorsorglich nachfolgende Haftungsbeschränkung: Der Anbieter haftet für Vorsatz und grobe Fahrlässigkeit sowie bei Verletzung einer wesentlichen Vertragspflicht (Kardinalpflicht). Der Anbieter haftet unter Begrenzung auf Ersatz des bei Vertragsschluss vorhersehbaren vertragstypischen Schadens für solche Schäden, die auf einer leicht fahrlässigen Verletzung von Kardinalpflichten durch ihn oder eines seiner gesetzlichen Vertreter oder Erfüllungsgehilfen beruhen. Bei leicht fahrlässiger Verletzung von Nebenpflichten, die keine Kardinalpflichten sind, haftet der Anbieter nicht. Die Haftung für Schäden, die in den Schutzbereich einer vom Anbieter gegebenen Garantie oder Zusicherung fallen sowie die Haftung für Ansprüche aufgrund des Produkthaftungsgesetzes und Schäden aus der Verletzung des Lebens, des Körpers oder der Gesundheit bleibt hiervon unberührt.

(2) Urheberrecht

Die auf dieser Website veröffentlichten Inhalte und Werke sind urheberrechtlich geschützt. Jede vom deutschen Urheberrecht nicht zugelassene Verwertung bedarf der vorherigen schriftlichen Zustimmung des jeweiligen Autors oder Urhebers. Dies gilt insbesondere für Vervielfältigung, Bearbeitung, Übersetzung, Einspeicherung, Verarbeitung bzw. Wiedergabe von Inhalten in Datenbanken oder anderen elektronischen Medien und Systemen. Inhalte und Beiträge Dritter sind dabei als solche gekennzeichnet. Die unerlaubte Vervielfältigung oder Weitergabe einzelner Inhalte oder kompletter Seiten ist nicht gestattet und strafbar. Lediglich die Herstellung von Kopien und Downloads für den persönlichen, privaten und nicht kommerziellen Gebrauch ist erlaubt.

Links zur Website des Anbieters sind jederzeit willkommen und bedürfen keiner Zustimmung durch den Anbieter der Website. Die Darstellung dieser Website in fremden Frames ist nur mit Erlaubnis zulässig.

(3) Datenschutz

Durch den Besuch der Website des Anbieters können Informationen über den Zugriff (Datum, Uhrzeit, betrachtete Seite) auf dem Server gespeichert werden. Diese Daten gehören nicht zu den personenbezogenen Daten, sondern sind anonymisiert. Sie werden ausschließlich zu statistischen Zwecken ausgewertet. Eine Weitergabe an Dritte, zu kommerziellen oder nichtkommerziellen Zwecken, findet nicht statt.

Der Anbieter weist ausdrücklich darauf hin, dass die Datenübertragung im Internet (z.B. bei der Kommunikation per E-Mail) Sicherheitslücken aufweisen und nicht lückenlos vor dem Zugriff durch Dritte geschützt werden kann.

Die Verwendung der Kontaktdaten der Anbieterkennzeichnung - insbesondere der Telefon-/Faxnummern und E-Mailadresse - zur gewerblichen Werbung ist ausdrücklich nicht erwünscht, es sei denn der Anbieter hatte zuvor seine schriftliche Einwilligung erteilt oder es besteht bereits ein geschäftlicher Kontakt. Der Anbieter und alle auf dieser Website genannten Personen widersprechen hiermit jeder kommerziellen Verwendung und Weitergabe ihrer Daten.

(4) Anwendbares Recht

Es gilt ausschließlich das maßgebliche Recht der Bundesrepublik Deutschland.

(5) Besondere Nutzungsbedingungen

Soweit besondere Bedingungen für einzelne Nutzungen dieser Website von den vorgenannten Punkten (1) bis (4) abweichen, wird an entsprechender Stelle ausdrücklich darauf hingewiesen. In diesem Falle gelten im jeweiligen Einzelfall die besonderen Nutzungsbedingungen.

Quelle: Disclaimer von Juraforum.de - Portal mit Rechtsanwalt-Suche.