第二十六章 SOAP 错误处理 - 处理 Web 客户端中的 S

2024-06-12  本文已影响0人  Cache技术分享

第二十六章 SOAP 错误处理 - 处理 Web 客户端中的 SOAP 故障和其他错误

处理 Web 客户端中的 SOAP 故障和其他错误

在网络客户端中,可以使用 TRY-CATCH 机制或较旧的 $ZTRAP 机制。

无论哪种情况,当Web 客户端收到错误时,都会设置特殊变量 $ZERROR%objlasterror

此外,客户端实例具有一个名为 SoapFault 的属性,它是 %SOAP.Fault%SOAP.Fault12的实例(取决于 Web 服务中使用的 SOAP 版本)。可以使用此属性中的信息。有关 %SOAP.Fault%SOAP.Fault12的更多信息,请参阅前面的部分。

示例 1:Try-Catch

以下方法使用TRY-CATCH

ClassMethod Divide(arg1 As %Numeric, arg2 As %Numeric) As %Numeric
{
    Set $ZERROR=""
    Set client=##class(FaultClient.DivideSoap).%New()

    Try {
        Set ans=client.Divide(arg1,arg2)
        }
    Catch {
        If $ZERROR["<ZSOAP>" {
            Set ans=%objlasterror
            } 
            Else {
            Set ans=$$$ERROR($$$ObjectScriptError,$ZERROR)
        }
    }
    
    Quit ans
}

此方法使用 %systemInclude 包含文件中定义的系统宏,因此包含此方法的类以以下内容开头:

Include %systemInclude 

示例 2:$ZTRAP

以下示例使用较旧的 $ZTRAP 机制。在这种情况下,当 Web 客户端收到错误时,控制权将转移到$ZTRAP 特殊变量指示的标签(如果该标签已定义)。

ClassMethod DivideWithZTRAP(arg1 As %Numeric = 1, arg2 As %Numeric = 2) As %Numeric
{
    Set $ZERROR=""
    Set $ZTRAP="ERRORTRAP"
    Set client=##class(FaultClient.DivideSoap).%New()
    Set ans=client.Divide(arg1,arg2)
    Quit ans
 
    //control goes here in case of error
ERRORTRAP 
    if $ZERROR["<ZSOAP>" 
    {
         quit client.SoapFault.Detail
        } 
    else 
    {
        quit %objlasterror
       }
}

SSL 握手错误

如果 Web客户端使用 SSL 连接并且发生 SSL握手错误,则客户端的 SSLError 属性包含描述 SSL 错误的文本。

上一篇 下一篇

猜你喜欢

热点阅读