PHP Soap Server中的SoapFault(错误处理)

时间:2013-07-25 13:09:46

标签: php xml soap soapserver soapfault

我正在开发一个新的Soap Web服务。以前的Web服务用于在遇到错误时返回array('error'=>"Please login first");。从我读过的内容来看,最好使用SoapFault。

以下行用于调用SoapFault:

throw new SoapFault($faultcode, $faultstring, $faultactor, $faultdetail, $faultname, $headerfault);

我看到Soap有预定义的代码,即:VersionMismatch,MustUnderstand,Client和Server。

请通过回答/更正以下内容来帮助我理解:

  1. 我可以使用自己的自定义错误代码,例如“Auth”或“Error55”。
    1. 有些使用数组(“namespace”,“errorcode”)。这应该用吗?命名空间的价值应该是什么?
  2. 我认为faultstring可以是用户的任何东西,比如“请先登录”。
  3. faultactor的目的是什么?
  4. faultdetail是一个包含故障额外细节的数组。什么样的细节?
  5. faultname的目的是什么?
  6. headerfault的目的是什么?

1 个答案:

答案 0 :(得分:1)

我认为通常不鼓励在一个SO问题中提出多个问题。此外,大部分内容将通过阅读the SOAP spec的第4.4节“SOAP Fault”来解答。

  1. 的faultcode

      

    faultcode元素旨在供软件使用以提供   用于识别故障的算法机制。故障代码必须是   存在于SOAP Fault元素中,faultcode值必须是a   第3节中定义的限定名称.SOAP定义一个小集合   SOAP错误代码,包括基本SOAP错误...命名空间标识符   [default] faultcode值为“http://schemas.xmlsoap.org/soap/envelope/

  2. faultstring

      

    faultstring元素旨在提供人类可读性   故障的解释,不适用于算法   处理

  3. faultactor

      

    “faultactor元素旨在提供有关谁的信息   导致错误发生在消息路径中(参见第2节)。它   类似于SOAP actor属性(参见4.2.2节),而是   指示标题条目的目的地,它表示   故障来源。 faultactor属性的值是URI   确定来源。不充当终极的应用程序   SOAP消息的目的地必须包含faultactor元素   SOAP Fault元素。消息的最终目的地可以使用   faultactor元素明确指出它生成了   错误(另见下面的细节元素)。“

  4. faultdetail是一个字符串,而不是一个数组,应该包含

      

    与Body元素相关的特定于应用程序的错误信息