SOAP - Ошибка

Если во время обработки возникает ошибка, ответом на сообщение SOAP является элемент ошибки SOAP в теле сообщения, и ошибка возвращается отправителю сообщения SOAP.

Механизм отказа SOAP возвращает конкретную информацию об ошибке, включая предопределенный код, описание и адрес процессора SOAP, который сгенерировал ошибку.

Указывает на заметку

  • Сообщение SOAP может содержать только один блок сбоя.

  • Ошибка - это необязательная часть сообщения SOAP.

  • Для привязки HTTP успешный ответ связан с диапазоном кодов состояния от 200 до 299.

  • Ошибка SOAP связана с диапазоном кодов состояния от 500 до 599.

Подэлементы неисправности

Ошибка SOAP имеет следующие подэлементы -

Старший Нет Подэлемент и описание
1

<faultCode>

Это текстовый код, используемый для обозначения класса ошибок. В следующей таблице приведен список предопределенных кодов неисправностей.

2

<faultString>

Это текстовое сообщение, объясняющее ошибку.

3

<faultActor>

Это текстовая строка, указывающая, кто вызвал ошибку. Это полезно, если сообщение SOAP проходит через несколько узлов в пути сообщения SOAP, и клиенту необходимо знать, какой узел вызвал ошибку. Узел, который не действует как конечный пункт назначения, должен включать элемент faultActor .

4

<detail>

Это элемент, используемый для передачи сообщений об ошибках приложения. Элемент подробных сведений может содержать дочерние элементы, называемые записями сведений.

Коды ошибок SOAP

Определенные ниже значения faultCode должны использоваться в элементе faultcode при описании ошибок.

Старший Нет Ошибка и описание
1

SOAP-ENV:VersionMismatch

Обнаружено недопустимое пространство имен для элемента SOAP Envelope.

2

SOAP-ENV:MustUnderstand

Непосредственный дочерний элемент элемента Header с атрибутом mustUnderstand, установленным в «1», не был распознан.

3

SOAP-ENV:Client

Сообщение было неправильно сформировано или содержало неверную информацию.

4

SOAP-ENV:Server

Возникла проблема с сервером, поэтому сообщение не может быть продолжено.

Пример ошибки SOAP

Следующий код представляет собой образец ошибки. Клиент запросил метод с именем ValidateCreditCard , но служба не поддерживает такой метод. Это представляет собой ошибку запроса клиента, и сервер возвращает следующий ответ 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>