Ошибки в SOAP

Если при обработке сообщения возникает ошибка, то клиенту, пославшему запрос, может быть отправлено SOAP-сообщение об ошибке. Для его описания используется элемент <Fault> в теле сообщения. Например, если при обработке запроса в интернет-магазине было превышено время ожидания запроса, то клиенту может быть послано следующее сообщение:

<?xml version="1.0" encoding="utf-8"?>

<soap12:Envelope xmlns:soap12="https://www.w3.org/2003/05/soap-envelope"

xmlns:m="https://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) – указывает на объект, вызвавший сбой при передаче сообщения по месту его назначения и его роль.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: