Eine SOAP-Nachricht kann eine ,,SOAP Fault`` Element enthalten. In ihm kann eine Fehlermeldung an den aufrufenden Client übertragen werden. Es ist auch möglich, das SOAP Fault-Element zur Übermittlung von Statusinformationen zu verwenden. Falls eine Nachricht eine SOAP Fault-Element enthält so steht es im Body der Nachricht. Eine Nachricht darf höchstens ein SOAP Fault-Element enthalten.
Hier die Fehlernachricht beim Versuch, auf ein noch nicht gestartetes Service zuzugreifen:
<?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>SOAP-ENV:Server</faultcode>
<faultstring>service 'urn:demoobj' unknown</faultstring>
<faultactor>/soap/servlet/rpcrouter</faultactor>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Im ,,faultcode`` wird angezeigt um was für eine Fehlerart es sich handelt. Die Fehlerklasse ,,SOAP-ENV:Server`` steht für Fehler beim Verarbeiten der SOAP-Nachricht. Jedes SOAP Fault-Element muß ein faultcode-Elemet enthalten.
Der ,,faultstring`` enthält eine Klartextfehlermeldung. Diese Meldung ist als Infomation für den Anwender gedacht, nicht zur maschinellen Auswertung. Das faultstring-Elemet ist ebenfalls zwingend erforderlich. Sinnvollerweise sollte hier eine Information über den aufgetretenen Fehler stehen.
Das Element ,,faultactor`` gibt an, wo auf dem Verarbeitungsweg der SOAP-Nachricht der Fehler aufgetrete ist.
Zusätzlich kann im SOAP Fault-Element noch ein Element Namens ,,detail`` auftauchen. Dies wird genau dann verwendet, wenn es bei der Verarbeitung von Body-Elementen zu Fehlern kommt. Beispiel zum ,,detail``-Element aus der Spezifikation:
HTTP/1.1 500 Internal Server Error
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode>SOAP-ENV:Server</faultcode>
<faultstring>Server Error</faultstring>
<detail>
<e:myfaultdetails xmlns:e="Some-URI">
<message>
My application didn't work
</message>
<errorcode>
1001
</errorcode>
</e:myfaultdetails>
</detail>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>