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>