Ошибки в SOAP
Если при обработке сообщения возникает ошибка, то клиенту, пославшему запрос, может быть отправлено SOAP-сообщение об ошибке. Для его описания используется элемент <Fault> в теле сообщения. Например, если при обработке запроса в интернет-магазине было превышено время ожидания запроса, то клиенту может быть послано следующее сообщение:
<?xml version="1.0" encoding="utf-8" ?>
<soap12:Envelope xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"
xmlns:m="http://www.mephi.ru/order/errors">
<soap12:Body>
<soap12:Fault>
<soap12:Code>
<soap12:Value>soap12:Receiver</soap12:Value>
<soap12:Subcode>
<soap12:Value>m:RequestTimeout</soap12:Value>
</soap12:Subcode>
</soap12:Code>
<soap12:Reason>
<soap12:Text xml:lang="en">
Request Timeout
</soap12:Text>
<soap12:Text xml:lang="ru">
Превышение времени ожидания запроса
</soap12:Text>
</soap12:Reason>
<soap12:Detail>
<m:MaxTime>5</m:MaxTime>
</soap12:Detail>
</soap12:Fault>
</soap12:Body>
</soap12:Envelope>
Как видно из приведенного выше примера, для элемента <Fault> определено несколько дочерних элементов:
· Код ошибки (Code) содержит информацию о типе произошедшей ошибки. В спецификации протокола определены следующие коды ошибки:
1. VersionMismatch – несоответствие версий протокола.
2. MustUnderstand – элемент с атрибутом «mustUnderstand» равным «true» не был правильно обработан.
3. DataEncodingUnknown – указанный стиль кодирования не поддерживается.
4. Sender – сообщение неверно оформлено.
5. Receiver – сообщение не может быть обработано, но ошибка не связана с его содержимым.
· Причина ошибки (Reason) – содержит текст ошибки.
· Подробная информация (Detail) – содержит специфичную для конкретного приложения информацию об ошибке.
· Источник ошибки (Node, Role) – указывает на объект, вызвавший сбой при передаче сообщения по месту его назначения и его роль.
Дата добавления: 2015-02-28; просмотров: 1325;