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>