SOAP - błąd

Jeśli podczas przetwarzania wystąpi błąd, odpowiedzią na komunikat SOAP jest element błędu protokołu SOAP w treści komunikatu, a błąd jest zwracany do nadawcy komunikatu SOAP.

Mechanizm błędu SOAP zwraca określone informacje o błędzie, w tym wstępnie zdefiniowany kod, opis i adres procesora SOAP, który wygenerował błąd.

Zwraca uwagę

  • Komunikat SOAP może zawierać tylko jeden blok błędu.

  • Błąd jest opcjonalną częścią komunikatu SOAP.

  • W przypadku powiązania HTTP pomyślna odpowiedź jest łączona z zakresem kodów stanu od 200 do 299.

  • Błąd protokołu SOAP jest powiązany z zakresem kodów stanu od 500 do 599.

Podelementy błędu

Błąd SOAP ma następujące elementy podrzędne -

Sr.No Element podrzędny i opis
1

<faultCode>

Jest to kod tekstowy używany do wskazania klasy błędów. W następnej tabeli znajduje się lista wstępnie zdefiniowanych kodów usterek.

2

<faultString>

Jest to wiadomość tekstowa wyjaśniająca błąd.

3

<faultActor>

Jest to ciąg tekstowy wskazujący, kto spowodował błąd. Jest to przydatne, jeśli komunikat SOAP przechodzi przez kilka węzłów w ścieżce komunikatów SOAP, a klient musi wiedzieć, który węzeł spowodował błąd. Węzeł, który nie działa jako ostateczne miejsce docelowe, musi zawierać element faultActor .

4

<detail>

Jest to element służący do przenoszenia komunikatów o błędach specyficznych dla aplikacji. Element szczegółu może zawierać elementy potomne zwane wpisami szczegółowymi.

Kody błędów SOAP

Zdefiniowane poniżej wartości faultCode muszą być używane w elemencie faultcode podczas opisywania błędów.

Sr.No Błąd i opis
1

SOAP-ENV:VersionMismatch

Znaleziono nieprawidłową przestrzeń nazw dla elementu SOAP Envelope.

2

SOAP-ENV:MustUnderstand

Bezpośredni element potomny elementu Header, z atrybutem mustUnderstand ustawionym na „1”, nie został zrozumiany.

3

SOAP-ENV:Client

Wiadomość została nieprawidłowo sformułowana lub zawierała nieprawidłowe informacje.

4

SOAP-ENV:Server

Wystąpił problem z serwerem, więc nie można było kontynuować wiadomości.

Przykład błędu SOAP

Poniższy kod to przykładowy błąd. Klient zażądał metody o nazwie ValidateCreditCard , ale usługa nie obsługuje takiej metody. To reprezentuje błąd żądania klienta, a serwer zwraca następującą odpowiedź SOAP -

<?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>