ГОСТ Р ИСО/МЭК 29361— 2012
3.3 Отказы SOAP
3.3.1 Идентификация отказов SOAP
Некоторые потребительские реализации для определения наличия отказа неправильно используют
только код статуса HTTP. Так как существуют ситуации, при которых инфраструктура сети изменяет код
статуса HTTP, идля большей надежности вПрофиле требуется проверка оболочки. Отказ является оболоч
кой. которая имеет единственный дочерний элемент элемента soap:Body и этот дочерний элемент есть
soap:Fault.
R1107 ПОЛУЧАТЕЛЬ ДОЛЖЕН интерпретировать сообщение SOAP как отказ, когда элемент
soap.Body сообщения имеет единственногопотомка soap:Fault.
3.3.2 Структура отказа SOAP
Профиль ограничивает содержимое элемента soap:Fault элементами, явно описанными в SOAP 1.1.
R1000 Когда ОБОЛОЧКА есть отказ, элемент soap:Fault НЕ ДОЛЖЕН иметь дочерних элемен
тов. отличных от faultcode. faultstring, faultactorи detail.
Например.
НЕПРАВИЛЬНО:
<soap:Fault xmlns:soap=’
http://schemas.xmlsoap.org/soap/envelope/’
>
<faultcode>soap:Client</faultcode>
<faultstring>lnvalid message format</fauItstring>
<faultactor»
http://example.org/someactor</faultactor>
<detail>B сообщении есть <Ь>много</Ь> элементов.
которые я не понимаю
</detail>
<m:Exceptk>n xmlns:m-
http://oxample.org/faults/excepbons’
>
<m:ExceptionType>Severe</m:ExceptionType>
</m:Exception»
</soap:Fault>
ПРАВИЛЬНО:
<soap:Fault xmlns:soap-
http://schemas.xmlsoap.org/soap/envelope/’
>
<faultcode»soap:Client</faultcode>
<faultstring>lnvaltd message fofmat</faultstring>
<fauttactor»
http://example.org/someactor</faultactor>
<detail>
<m:msgxmlns:m-
http://example.org/faults/exceptions’»
В сообщении есть <Ь>много</Ь> элементов,
которые я не понимаю
</m:msg>
<m:Exception xmlns:m-
http://example.org/faults/except»ons’>
<m:ExceptionType>Severe</m:ExceptionType>
</m:Exception»
«/detail»
</soap:Fault»
3.3.3 Квалификация пространства имен отказа SOAP
Потомки элемента soap:Fault являются локальными для этого элемента, следовательно, квалифика
ция пространства имен не требуется.
R1000 Когда ОБОЛОЧКА является отказом, дочерние элементы элемента soap.FaultДОЛЖНЫ
быть неквалифицированными.
Например.
НЕПРАВИЛЬНО:
<soap:Fault xmlns:soap=’
http://schemas.
xmlsoap.org/soap/envelope/’»
<soap:faultcode»soap:Client</soap:fauitcode>
<soap:faultstring»lnvalid message format</soap:faultstring>
<soap:faultactor»http;//example.org/someactor</soap:faultactor>
<soap:detail>
<m:msg xmlns:m=,http.//example.org/faults/exceptions’»
9