SOAP - Kurzanleitung

SOAP ist eine Abkürzung für Simple Object Access Protocol. Es ist ein XML-basiertes Messaging-Protokoll für den Informationsaustausch zwischen Computern. SOAP ist eine Anwendung der XML-Spezifikation.

Zu beachtende Punkte

  • SOAP ist ein Kommunikationsprotokoll für die Kommunikation über das Internet.

  • SOAP kann HTTP für XML-Nachrichten erweitern.

  • SOAP bietet Datentransport für Webdienste.

  • SOAP kann vollständige Dokumente austauschen oder eine Remote-Prozedur aufrufen.

  • SOAP kann zum Senden einer Nachricht verwendet werden.

  • SOAP ist plattform- und sprachunabhängig.

  • SOAP ist die XML-Methode, um zu definieren, welche Informationen wie gesendet werden.

  • Mit SOAP können Clientanwendungen problemlos eine Verbindung zu Remotediensten herstellen und Remotemethoden aufrufen.

Obwohl SOAP in einer Vielzahl von Nachrichtensystemen verwendet und über eine Vielzahl von Transportprotokollen bereitgestellt werden kann, liegt der anfängliche Fokus von SOAP auf Remoteprozeduraufrufen, die über HTTP transportiert werden.

Andere Frameworks, einschließlich CORBA, DCOM und Java RMI, bieten ähnliche Funktionen wie SOAP, SOAP-Nachrichten sind jedoch vollständig in XML geschrieben und daher eindeutig plattform- und sprachunabhängig.

Eine SOAP-Nachricht ist ein gewöhnliches XML-Dokument, das die folgenden Elemente enthält:

  • Envelope- Definiert den Anfang und das Ende der Nachricht. Es ist ein obligatorisches Element.

  • Header- Enthält alle optionalen Attribute der Nachricht, die bei der Verarbeitung der Nachricht verwendet werden, entweder an einem Zwischenpunkt oder am endgültigen Endpunkt. Es ist ein optionales Element.

  • Body- Enthält die XML-Daten der gesendeten Nachricht. Es ist ein obligatorisches Element.

  • Fault - Ein optionales Fehlerelement, das Informationen zu Fehlern enthält, die während der Verarbeitung der Nachricht auftreten.

Alle diese Elemente werden im Standard-Namespace für den SOAP-Umschlag deklariert. http://www.w3.org/2001/12/soap-envelope und der Standard-Namespace für SOAP-Codierung und Datentypen ist - http://www.w3.org/2001/12/soap-encoding

NOTE- Alle diese Spezifikationen können sich ändern. Aktualisieren Sie sich also ständig mit den neuesten Spezifikationen, die auf der W3-Website verfügbar sind.

SOAP-Nachrichtenstruktur

Der folgende Block zeigt die allgemeine Struktur einer SOAP-Nachricht -

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

   <SOAP-ENV:Header>
      ...
      ...
   </SOAP-ENV:Header>
   <SOAP-ENV:Body>
      ...
      ...
      <SOAP-ENV:Fault>
         ...
         ...
      </SOAP-ENV:Fault>
      ...
   </SOAP-ENV:Body>
</SOAP_ENV:Envelope>

Der SOAP-Umschlag zeigt den Beginn und das Ende der Nachricht an, damit der Empfänger weiß, wann eine gesamte Nachricht empfangen wurde. Der SOAP-Umschlag löst das Problem, zu wissen, wann Sie eine Nachricht empfangen haben und bereit sind, sie zu verarbeiten. Der SOAP-Umschlag ist daher grundsätzlich ein Verpackungsmechanismus.

Zu beachtende Punkte

  • Jede SOAP-Nachricht hat ein Root-Envelope-Element.

  • Umschlag ist ein obligatorischer Bestandteil der SOAP-Nachricht.

  • Jedes Envelope-Element muss genau ein Body-Element enthalten.

  • Wenn ein Umschlag ein Header-Element enthält, darf er nicht mehr als ein Element enthalten und als erstes untergeordnetes Element des Umschlags vor dem Text erscheinen.

  • Der Umschlag ändert sich, wenn sich die SOAP-Versionen ändern.

  • Der SOAP-Umschlag wird mit dem ENV- Namespace-Präfix und dem Envelope-Element angegeben.

  • Die optionale SOAP-Codierung wird auch mithilfe eines Namespace-Namens und des optionalen encodingStyle- Elements angegeben, die auch auf einen anderen Codierungsstil als den SOAP-Stil verweisen können.

  • Ein v1.1-kompatibler SOAP-Prozessor generiert einen Fehler beim Empfang einer Nachricht, die den v1.2-Umschlag-Namespace enthält.

  • Ein v1.2-kompatibler SOAP-Prozessor generiert einen VersionMismatch- Fehler, wenn er eine Nachricht empfängt, die den v1.2-Umschlag-Namespace nicht enthält.

v1.2-kompatible SOAP-Nachricht

Im Folgenden finden Sie ein Beispiel für eine v1.2-kompatible SOAP-Nachricht.

<?xml version = "1.0"?>
<SOAP-ENV:Envelope 
   xmlns:SOAP-ENV = "http://www.w3.org/2001/12/soap-envelope" 
   SOAP-ENV:encodingStyle = " http://www.w3.org/2001/12/soap-encoding">
   ...
   Message information goes here
   ...
</SOAP-ENV:Envelope>

SOAP mit HTTP POST

Das folgende Beispiel zeigt die Verwendung einer SOAP-Nachricht innerhalb einer HTTP-POST-Operation, die die Nachricht an den Server sendet. Es zeigt die Namespaces für die Umschlagschemadefinition und für die Schemadefinition der Codierungsregeln. Die OrderEntry- Referenz im HTTP-Header ist der Name des Programms, das auf der Website tutorialspoint.com aufgerufen werden soll.

POST /OrderEntry HTTP/1.1
Host: www.tutorialspoint.com
Content-Type: application/soap; charset = "utf-8"
Content-Length: nnnn

<?xml version = "1.0"?>
<SOAP-ENV:Envelope 
   xmlns:SOAP-ENV = "http://www.w3.org/2001/12/soap-envelope" 
   SOAP-ENV:encodingStyle = " http://www.w3.org/2001/12/soap-encoding">
   ...
   Message information goes here
   ...
</SOAP-ENV:Envelope>

NOTE - Die HTTP-Bindung gibt den Speicherort des Dienstes an.

Das optionale Header-Element bietet einen flexiblen Rahmen für die Angabe zusätzlicher Anforderungen auf Anwendungsebene. Beispielsweise kann das Header-Element verwendet werden, um eine digitale Signatur für kennwortgeschützte Dienste anzugeben. Ebenso kann damit eine Kontonummer für Pay-per-Use-SOAP-Dienste angegeben werden.

Zu beachtende Punkte

  • Es ist ein optionaler Teil einer SOAP-Nachricht.

  • Header-Elemente können mehrfach vorkommen.

  • Überschriften sollen neue Features und Funktionen hinzufügen.

  • Der SOAP-Header enthält Header-Einträge, die in einem Namespace definiert sind.

  • Der Header wird als erstes unmittelbares untergeordnetes Element des SOAP-Umschlags codiert.

  • Wenn mehrere Header definiert sind, werden alle unmittelbaren untergeordneten Elemente des SOAP-Headers als SOAP-Headerblöcke interpretiert.

SOAP-Header-Attribute

Ein SOAP-Header kann die folgenden zwei Attribute haben:

Schauspielerattribut

Das SOAP-Protokoll definiert einen Nachrichtenpfad als eine Liste von SOAP-Dienstknoten. Jeder dieser Zwischenknoten kann eine Verarbeitung durchführen und die Nachricht dann an den nächsten Knoten in der Kette weiterleiten. Durch Festlegen des Actor-Attributs kann der Client den Empfänger des SOAP-Headers angeben.

MustUnderstand-Attribut

Es gibt an, ob ein Header-Element optional oder obligatorisch ist. Wenn true festgelegt ist, muss der Empfänger das Header-Attribut gemäß seiner definierten Semantik verstehen und verarbeiten oder einen Fehler zurückgeben.

Das folgende Beispiel zeigt, wie ein Header in einer SOAP-Nachricht verwendet wird.

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

   <SOAP-ENV:Header>
      <t:Transaction 
         xmlns:t = "http://www.tutorialspoint.com/transaction/" 
         SOAP-ENV:mustUnderstand = "true">5
      </t:Transaction>
   </SOAP-ENV:Header>
   ...
   ...
</SOAP-ENV:Envelope>

Der SOAP-Body ist ein obligatorisches Element, das die anwendungsdefinierten XML-Daten enthält, die in der SOAP-Nachricht ausgetauscht werden. Der Textkörper muss im Umschlag enthalten sein und allen Überschriften folgen, die möglicherweise für die Nachricht definiert sind.

Der Body wird als untergeordnetes Element der Hüllkurve definiert, und die Semantik für den Body wird im zugehörigen SOAP-Schema definiert.

Der Text enthält obligatorische Informationen, die für den endgültigen Empfänger der Nachricht bestimmt sind. Zum Beispiel -

<?xml version = "1.0"?>
<SOAP-ENV:Envelope>
   ........
   <SOAP-ENV:Body>
      <m:GetQuotation xmlns:m = "http://www.tp.com/Quotation">
         <m:Item>Computers</m:Item>
      </m:GetQuotation>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Im obigen Beispiel wird ein Angebot für Computersätze angefordert. Beachten Sie, dass die obigen Elemente m: GetQuotation und Item anwendungsspezifische Elemente sind. Sie sind nicht Teil des SOAP-Standards.

Hier ist die Antwort auf die obige Abfrage -

<?xml version = "1.0"?>
<SOAP-ENV:Envelope>
   ........
   <SOAP-ENV:Body>
      <m:GetQuotationResponse xmlns:m = "http://www.tp.com/Quotation">
         <m:Quotation>This is Qutation</m:Quotation>
      </m:GetQuotationResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Normalerweise definiert die Anwendung auch ein Schema, das Semantik enthält, die den Anforderungs- und Antwortelementen zugeordnet ist.

Der Angebotsservice kann mithilfe eines EJB implementiert werden, der auf einem Anwendungsserver ausgeführt wird. In diesem Fall ist der SOAP-Prozessor dafür verantwortlich, die Body-Informationen als Parameter in die EJB-Implementierung des GetQuotationResponse- Dienstes und aus dieser heraus abzubilden . Der SOAP-Prozessor kann die Body-Informationen auch einem .NET-Objekt, einem CORBA-Objekt, einem COBOL-Programm usw. zuordnen.

Wenn während der Verarbeitung ein Fehler auftritt, ist die Antwort auf eine SOAP-Nachricht ein SOAP-Fehlerelement im Nachrichtentext, und der Fehler wird an den Absender der SOAP-Nachricht zurückgegeben.

Der SOAP-Fehlermechanismus gibt bestimmte Informationen über den Fehler zurück, einschließlich eines vordefinierten Codes, einer Beschreibung und der Adresse des SOAP-Prozessors, der den Fehler generiert hat.

Zu beachtende Punkte

  • Eine SOAP-Nachricht kann nur einen Fehlerblock enthalten.

  • Der Fehler ist ein optionaler Teil einer SOAP-Nachricht.

  • Bei der HTTP-Bindung wird eine erfolgreiche Antwort mit dem Statuscodebereich von 200 bis 299 verknüpft.

  • Der SOAP-Fehler ist mit dem Statuscodebereich von 500 bis 599 verknüpft.

Unterelemente des Fehlers

Der SOAP-Fehler enthält die folgenden Unterelemente:

Sr.Nr. Unterelement & Beschreibung
1

<faultCode>

Es ist ein Textcode, der verwendet wird, um eine Fehlerklasse anzuzeigen. In der nächsten Tabelle finden Sie eine Liste vordefinierter Fehlercodes.

2

<faultString>

Es ist eine Textnachricht, die den Fehler erklärt.

3

<faultActor>

Es ist eine Textzeichenfolge, die angibt, wer den Fehler verursacht hat. Dies ist nützlich, wenn die SOAP-Nachricht mehrere Knoten im SOAP-Nachrichtenpfad durchläuft und der Client wissen muss, welcher Knoten den Fehler verursacht hat. Ein Knoten, der nicht als endgültiges Ziel fungiert, muss ein errorActor- Element enthalten.

4

<detail>

Es ist ein Element, das zum Übertragen anwendungsspezifischer Fehlermeldungen verwendet wird. Das Detailelement kann untergeordnete Elemente enthalten, die als Detaileinträge bezeichnet werden.

SOAP-Fehlercodes

Die unten definierten Fehlercode-Werte müssen im Fehlercode- Element verwendet werden, um Fehler zu beschreiben.

Sr.Nr. Fehlerbeschreibung
1

SOAP-ENV:VersionMismatch

Es wurde ein ungültiger Namespace für das SOAP-Envelope-Element gefunden.

2

SOAP-ENV:MustUnderstand

Ein unmittelbares untergeordnetes Element des Header-Elements mit dem Attribut mustUnderstand auf "1" wurde nicht verstanden.

3

SOAP-ENV:Client

Die Nachricht wurde falsch gebildet oder enthielt falsche Informationen.

4

SOAP-ENV:Server

Es gab ein Problem mit dem Server, sodass die Nachricht nicht fortgesetzt werden konnte.

Beispiel für einen SOAP-Fehler

Der folgende Code ist ein Beispielfehler. Der Client hat eine Methode mit dem Namen ValidateCreditCard angefordert , der Dienst unterstützt eine solche Methode jedoch nicht. Dies stellt einen Clientanforderungsfehler dar und der Server gibt die folgende SOAP-Antwort zurück:

<?xml version = '1.0' encoding = 'UTF-8'?>
<SOAP-ENV:Envelope
   xmlns:SOAP-ENV = "http://schemas.xmlsoap.org/soap/envelope/"
   xmlns:xsi = "http://www.w3.org/1999/XMLSchema-instance"
   xmlns:xsd = "http://www.w3.org/1999/XMLSchema">

   <SOAP-ENV:Body>
      <SOAP-ENV:Fault>
         <faultcode xsi:type = "xsd:string">SOAP-ENV:Client</faultcode>
         <faultstring xsi:type = "xsd:string">
            Failed to locate method (ValidateCreditCard) in class (examplesCreditCard) at
               /usr/local/ActivePerl-5.6/lib/site_perl/5.6.0/SOAP/Lite.pm line 1555.
         </faultstring>
      </SOAP-ENV:Fault>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

SOAP enthält einen integrierten Satz von Regeln zum Codieren von Datentypen. Es ermöglicht der SOAP-Nachricht, bestimmte Datentypen anzugeben, z. B. Ganzzahlen, Floats, Doubles oder Arrays.

  • SOAP-Datentypen werden in zwei große Kategorien unterteilt - Skalartypen und zusammengesetzte Typen.

  • Skalartypen enthalten genau einen Wert wie Nachname, Preis oder Produktbeschreibung.

  • Zusammengesetzte Typen enthalten mehrere Werte wie eine Bestellung oder eine Liste von Börsenkursen.

  • Verbindungstypen werden weiter in Arrays und Strukturen unterteilt.

  • Der Codierungsstil für eine SOAP-Nachricht wird über das Attribut SOAP-ENV: encodingStyle festgelegt .

  • Verwenden Sie den Wert, um die SOAP 1.1-Codierung zu verwenden http://schemas.xmlsoap.org/soap/encoding/

  • Verwenden Sie den Wert, um die SOAP 1.2-Codierung zu verwenden http://www.w3.org/2001/12/soap-encoding

  • Die neueste SOAP-Spezifikation übernimmt alle vom XML-Schema definierten integrierten Typen. Dennoch behält SOAP seine eigene Konvention zum Definieren von Konstrukten bei, die nicht durch das XML-Schema standardisiert sind, wie z. B. Arrays und Referenzen.

Skalartypen

Für skalare Typen übernimmt SOAP alle integrierten einfachen Typen, die in der XML-Schemaspezifikation angegeben sind. Dies umfasst Strings, Floats, Doubles und Integer.

In der folgenden Tabelle sind die wichtigsten einfachen Typen aufgeführt, die aus dem XML-Schema Teil 0 - Primer entnommen wurden http://www.w3.org/TR/2000/WD-xmlschema-0-20000407/

Einfache Typen Integriertes XML-Schema
Einfacher Typ Beispiel (e)
Zeichenfolge Stellen Sie sicher, dass dies elektrisch ist.
Boolescher Wert wahr, falsch, 1, 0.
schweben -INF, -1E4, -0, 0, 12,78E-2, 12, INF, NaN.
doppelt -INF, -1E4, -0, 0, 12,78E-2, 12, INF, NaN.
Dezimal -1,23, 0, 123,4, 1000,00.
binär 100010
ganze Zahl -126789, -1, 0, 1, 126789.
nonPositiveInteger -126789, -1, 0.
negativeInteger -126789, -1.
lange -1, 12678967543233
int -1, 126789675
kurz -1, 12678
Byte -1, 126
nonNegativeInteger 0, 1, 126789
unsignedLong 0, 12678967543233
unsignedInt 0, 1267896754
unsignedShort 0, 12678
unsignedByte 0, 126
positive ganze Zahl 1, 126789.
Datum 1999-05-31, --- 05.
Zeit 13: 20: 00.000, 13: 20: 00.000-05: 00

Hier ist zum Beispiel eine SOAP-Antwort mit einem doppelten Datentyp -

<?xml version = '1.0' encoding = 'UTF-8'?>
<SOAP-ENV:Envelope 
   xmlns:SOAP-ENV = "http://www.w3.org/2001/12/soap-envelope"
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" 
   xmlns:xsd = "http://www.w3.org/2001/XMLSchema">
   
   <SOAP-ENV:Body>
      <ns1:getPriceResponse 
         xmlns:ns1 = "urn:examples:priceservice"  
         SOAP-ENV:encodingStyle = "http://www.w3.org/2001/12/soap-encoding">
         <return xsi:type = "xsd:double">54.99</return>
      </ns1:getPriceResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Verbindungstypen

SOAP-Arrays haben sehr spezielle Regeln, für die Sie sowohl den Elementtyp als auch die Arraygröße angeben müssen. SOAP unterstützt auch mehrdimensionale Arrays, aber nicht alle SOAP-Implementierungen unterstützen mehrdimensionale Funktionen.

Um ein Array zu erstellen, müssen Sie es als Array- Typ xsi: angeben . Das Array muss auch ein arrayType- Attribut enthalten. Dieses Attribut ist erforderlich, um den Datentyp für die enthaltenen Elemente und die Dimension (en) des Arrays anzugeben.

Das folgende Attribut gibt beispielsweise ein Array mit 10 Doppelwerten an:

arrayType = "xsd:double[10]"

Im Gegensatz dazu gibt das folgende Attribut ein zweidimensionales Array von Zeichenfolgen an:

arrayType = "xsd:string[5,5]"

Hier ist eine SOAP-Beispielantwort mit einem Array von Doppelwerten -

<?xml version = '1.0' encoding = 'UTF-8'?>
<SOAP-ENV:Envelope
   xmlns:SOAP-ENV = "http://www.w3.org/2001/12/soap-envelope" 
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" 
   xmlns:xsd = "http://www.w3.org/2001/XMLSchema">

   <SOAP-ENV:Body>
      <ns1:getPriceListResponse 
         xmlns:ns1 = "urn:examples:pricelistservice"  
         SOAP-ENV:encodingStyle = "http://www.w3.org/2001/12/soap-encoding">

         <return xmlns:ns2 = "http://www.w3.org/2001/09/soap-encoding"  
            xsi:type = "ns2:Array" ns2:arrayType = "xsd:double[2]">
            <item xsi:type = "xsd:double">54.99</item>
            <item xsi:type = "xsd:double">19.99</item>
         </return>
      </ns1:getPriceListResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Strukturen enthalten mehrere Werte, aber jedes Element wird mit einem eindeutigen Accessor-Element angegeben. Betrachten Sie beispielsweise einen Artikel in einem Produktkatalog. In diesem Fall kann die Struktur eine Produkt-SKU, einen Produktnamen, eine Beschreibung und einen Preis enthalten. So würde eine solche Struktur in einer SOAP-Nachricht dargestellt:

<?xml version = '1.0' encoding = 'UTF-8'?>
<SOAP-ENV:Envelope 
   xmlns:SOAP-ENV = "http://www.w3.org/2001/12/soap-envelope"
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" 
   xmlns:xsd = "http://www.w3.org/2001/XMLSchema">

   <SOAP-ENV:Body>
      <ns1:getProductResponse
         xmlns:ns1 = "urn:examples:productservice" 
         SOAP-ENV:encodingStyle = "http://www.w3.org/2001/12/soap-encoding">
		
         <return xmlns:ns2 = "urn:examples" xsi:type = "ns2:product">
            <name xsi:type = "xsd:string">Red Hat Linux</name>
            <price xsi:type = "xsd:double">54.99</price>
            <description xsi:type = "xsd:string">
               Red Hat Linux Operating System
            </description>
            <SKU xsi:type = "xsd:string">A358185</SKU>
         </return>
      </ns1:getProductResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

NOTE- Bitte achten Sie beim Schreiben Ihres SOAP-Codes auf die richtige Einrückung. Jedes Element in einer Struktur wird mit einem eindeutigen Zugriffsnamen angegeben. Die obige Nachricht enthält beispielsweise vier Accessor-Elemente - Name, Preis, Beschreibung und SKU. Jedes Element kann einen eigenen Datentyp haben. Beispielsweise wird name als Zeichenfolge angegeben, während price als double angegeben wird.

SOAP ist an kein Transportprotokoll gebunden. SOAP kann über SMTP, FTP, IBMs MQSeries oder Microsoft Message Queuing (MSMQ) transportiert werden.

Die SOAP-Spezifikation enthält nur Details zu HTTP. HTTP bleibt das beliebteste SOAP-Transportprotokoll.

SOAP über HTTP

Ganz logisch werden SOAP-Anforderungen über eine HTTP-Anforderung gesendet und SOAP-Antworten werden innerhalb des Inhalts der HTTP-Antwort zurückgegeben. Während SOAP-Anforderungen über ein HTTP-GET gesendet werden können, enthält die Spezifikation nur Details zum HTTP-POST.

Darüber hinaus sind sowohl HTTP-Anforderungen als auch -Antworten erforderlich, um ihren Inhaltstyp auf text / xml festzulegen.

Die SOAP-Spezifikation schreibt vor, dass der Client einen SOAPAction-Header bereitstellen muss , der tatsächliche Wert des SOAPAction-Headers hängt jedoch von der SOAP-Server-Implementierung ab.

Um beispielsweise auf den von XMethods gehosteten AltaVista BabelFish-Übersetzungsdienst zuzugreifen, müssen Sie Folgendes als SOAPAction-Header angeben.

urn:xmethodsBabelFish#BabelFish

Auch wenn der Server keinen vollständigen SOAPAction-Header benötigt, muss der Client eine leere Zeichenfolge ("") oder einen Nullwert angeben. Zum Beispiel -

SOAPAction: ""
SOAPAction:

Hier ist eine Beispielanforderung, die per HTTP an den XMethods Babelfish Translation Service gesendet wurde:

POST /perl/soaplite.cgi HTTP/1.0
Host: services.xmethods.com
Content-Type: text/xml; charset = utf-8
Content-Length: 538
SOAPAction: "urn:xmethodsBabelFish#BabelFish"

<?xml version = '1.0' encoding = 'UTF-8'?>
<SOAP-ENV:Envelope 
   xmlns:SOAP-ENV = "http://schemas.xmlsoap.org/soap/envelope/" 
   xmlns:xsi = "http://www.w3.org/1999/XMLSchema-instance"
   xmlns:xsd = "http://www.w3.org/1999/XMLSchema">

   <SOAP-ENV:Body>
      <ns1:BabelFish
         xmlns:ns1 = "urn:xmethodsBabelFish"
         SOAP-ENV:encodingStyle = "http://schemas.xmlsoap.org/soap/encoding/">
         <translationmode xsi:type = "xsd:string">en_fr</translationmode>
         <sourcedata xsi:type = "xsd:string">Hello, world!</sourcedata>
      </ns1:BabelFish>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Beachten Sie den Inhaltstyp und den SOAPAction-Header. Beachten Sie auch, dass für die BabelFish-Methode zwei String-Parameter erforderlich sind. Der Übersetzungsmodus en_fr übersetzt vom Englischen ins Französische.

Hier ist die Antwort von XMethods -

HTTP/1.1 200 OK
Date: Sat, 09 Jun 2001 15:01:55 GMT
Server: Apache/1.3.14 (Unix) tomcat/1.0 PHP/4.0.1pl2
SOAPServer: SOAP::Lite/Perl/0.50
Cache-Control: s-maxage = 60, proxy-revalidate
Content-Length: 539
Content-Type: text/xml

<?xml version = "1.0" encoding = "UTF-8"?>
<SOAP-ENV:Envelope
   xmlns:SOAP-ENC = "http://schemas.xmlsoap.org/soap/encoding/"
   SOAP-ENV:encodingStyle = "http://schemas.xmlsoap.org/soap/encoding/"
   xmlns:xsi = "http://www.w3.org/1999/XMLSchema-instance"
   xmlns:SOAP-ENV = "http://schemas.xmlsoap.org/soap/envelope/"
   xmlns:xsd = "http://www.w3.org/1999/XMLSchema">
   
   <SOAP-ENV:Body>
      <namesp1:BabelFishResponse xmlns:namesp1 = "urn:xmethodsBabelFish">
         <return xsi:type = "xsd:string">Bonjour, monde!</return>
      </namesp1:BabelFishResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Über HTTP übermittelte SOAP-Antworten müssen denselben HTTP-Statuscodes folgen. Ein Statuscode von 200 OK zeigt beispielsweise eine erfolgreiche Antwort an. Ein Statuscode von 500 Internal Server Error zeigt an, dass ein Serverfehler vorliegt und dass die SOAP-Antwort ein Fehlerelement enthält.

Im folgenden Beispiel wird eine GetQuotation- Anforderung über HTTP an einen SOAP-Server gesendet. Die Anforderung verfügt über einen QuotationName- Parameter, und in der Antwort wird ein Quotation zurückgegeben.

Der Namespace für die Funktion ist in definiert http://www.xyz.org/quotation Adresse.

Hier ist die SOAP-Anfrage -

POST /Quotation HTTP/1.0
Host: www.xyz.org
Content-Type: text/xml; charset = utf-8
Content-Length: nnn

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

   <SOAP-ENV:Body xmlns:m = "http://www.xyz.org/quotations">
      <m:GetQuotation>
         <m:QuotationsName>MiscroSoft</m:QuotationsName>
      </m:GetQuotation>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Eine entsprechende SOAP-Antwort sieht aus wie -

HTTP/1.0 200 OK
Content-Type: text/xml; charset = utf-8
Content-Length: nnn

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

   <SOAP-ENV:Body xmlns:m = "http://www.xyz.org/quotation">
      <m:GetQuotationResponse>
         <m:Quotation>Here is the quotation</m:Quotation>
      </m:GetQuotationResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

SOAP 1.1 wurde ursprünglich im Mai 2000 beim W3C eingereicht. Zu den offiziellen Einreichern gehörten große Unternehmen wie Microsoft, IBM und Ariba sowie kleinere Unternehmen wie UserLand Software und DevelopMentor.

Im Juli 2001 veröffentlichte die XML-Protokoll-Arbeitsgruppe einen "Arbeitsentwurf" von SOAP 1.2. Innerhalb des W3C ist dieses Dokument offiziell in Arbeit, was bedeutet, dass das Dokument wahrscheinlich viele Male aktualisiert wird, bevor es fertiggestellt wird.

SOAP Version 1.1 ist online verfügbar unter http://www.w3.org/TR/SOAP/

Der Arbeitsentwurf von SOAP Version 1.2 ist verfügbar unter http://www.w3.org/TR/soap12/

Beachten Sie, dass das W3C auch eine Übermittlung für "SOAP-Nachrichten mit Anhängen" hostet, die von der SOAP-Kernspezifikation getrennt ist. Diese Spezifikation ermöglicht es SOAP-Nachrichten, binäre Anhänge wie Bilder und Audiodateien zu enthalten. Ausführliche Informationen finden Sie im W3C-Hinweis unterhttp://www.w3.org/TR/SOAP-attachments.