美文网首页
第十九章 SOAP 错误处理

第十九章 SOAP 错误处理

作者: Cache技术分享 | 来源:发表于2024-06-06 08:05 被阅读0次

第十九章 SOAP 错误处理

本主题介绍如何处理 Web 服务和 Web 客户端内的故障。

请注意,SOAPPREFIX 参数会影响任何 SOAP 错误中使用的前缀;请参阅指定 SOAP 信封前缀。

Web 服务中的默认故障处理

默认情况下,当 IRIS 数据平台 Web 服务遇到错误时,它会返回包含故障的标准 SOAP 消息。以下显示了一个示例(针对 SOAP 1.1)。此示例中省略了 SOAP 信封:

<SOAP-ENV:Body>
 <SOAP-ENV:Fault>
  <faultcode>SOAP-ENV:Server</faultcode>
  <faultstring>Server Application Error</faultstring>
  <detail>
     <error xmlns='https://www.myapp.org' >
       <text>ERROR #5002: ObjectScript error: <DIVIDE>zDivide^FaultEx.Service.1</text>
     </error>
  </detail>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>

Web 服务中返回自定义 SOAP 错误

要创建并返回自定义 SOAP 错误,请在捕获错误的代码的适当区域内执行以下操作:

  1. 创建包含适当信息的错误对象。为此,请调用 Web 服务的以下方法之一:MakeFault()MakeFault12()MakeSecurityFault()MakeStatusFault()。这些将在下一小节中讨论。

或者手动创建一个故障对象,如本主题后面所述。

  1. 调用 Web 服务的 ReturnFault() 方法,将故障对象作为参数传递。请注意,ReturnFault() 不会返回给其调用者;它只是发送故障并终止 Web 方法的处理。

以下显示一个例子:

Method Divide(arg1 As %Numeric, arg2 As %Numeric) As %Numeric [ WebMethod ]
{
  Try {
    Set ans=arg1 / arg2
    } Catch {

        //<detail> element must contain element(s) or whitespace
        //specify this element by passing valid XML as string argument to MakeFault() 
        set mydetail="<mymessage>Division error detail</mymessage>"

        set fault=..MakeFault($$$FAULTServer,"Division error",mydetail)
        
        // ReturnFault must be called to send the fault to the client.
        // ReturnFault will not return here.
        Do ..ReturnFault(fault)
      }
  Quit ans
}

相关文章

网友评论

      本文标题:第十九章 SOAP 错误处理

      本文链接:https://www.haomeiwen.com/subject/qujpqjtx.html