第十九章 SOAP 错误处理

第十九章 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
}

相关推荐

  1. SOAP 错误处理

    2024-06-13 03:46:03       32 阅读
  2. 类的继承

    2024-06-13 03:46:03       53 阅读
  3. C++ primer

    2024-06-13 03:46:03       33 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-13 03:46:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-13 03:46:03       101 阅读
  3. 在Django里面运行非项目文件

    2024-06-13 03:46:03       82 阅读
  4. Python语言-面向对象

    2024-06-13 03:46:03       91 阅读

热门阅读

  1. 低代码开发:中小企业数字化转型指南

    2024-06-13 03:46:03       33 阅读
  2. 如何看待微芯片的植入

    2024-06-13 03:46:03       30 阅读
  3. Kubeadm 快速安装k8s集群

    2024-06-13 03:46:03       26 阅读
  4. Centos7.9使用kubeadm部署K8S集群

    2024-06-13 03:46:03       26 阅读
  5. Codeforces Round 766 (Div. 2) (博弈论 + 贪心)

    2024-06-13 03:46:03       31 阅读
  6. git:切换到指定的commit

    2024-06-13 03:46:03       25 阅读
  7. SHELL脚本学习(七) 脚本控制

    2024-06-13 03:46:03       32 阅读
  8. C++中的组合模式

    2024-06-13 03:46:03       25 阅读
  9. 提供input type=“file”类的上传输入域有那些?

    2024-06-13 03:46:03       37 阅读
  10. 基于 中间件 的 数据交换平台 的实现

    2024-06-13 03:46:03       27 阅读
  11. spring和Mybatis的逆向工程

    2024-06-13 03:46:03       30 阅读
  12. 2024年,计算机相关专业还值得选择吗?

    2024-06-13 03:46:03       28 阅读