PHP Soap服务器中的SoapFault(错误处理)


SoapFault in PHP Soap Server (Error Handling)

我正在开发一个新的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可以是任何东西,比如"Please login first"
  3. 犯错者的目的是什么
  4. faultdetail是一个数组,包含故障的额外细节。什么样的细节
  5. faultname的目的是什么
  6. headerfault的目的是什么

我认为通常不鼓励在一个SO问题中提出多个问题。此外,阅读SOAP规范的第4.4节"SOAP故障"可以回答大部分问题。

  1. 故障代码

    faultcode元素用于软件提供用于识别故障的算法机制。故障代码必须为存在于SOAP Fault元素中,并且faultcode值必须是第3节中定义的合格名称。SOAP定义了一个小集合包含基本SOAP故障的SOAP故障代码。。。命名空间标识符对于[默认值],faultcode值为"http://schemas.xmlsoap.org/soap/envelope/"

  2. 故障字符串

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

  3. 故障因素

    "faultactor元素旨在提供有关谁的信息导致故障发生在消息路径内(请参阅第2节)。它类似于SOAP actor属性(请参见第4.2.2节),但是指示头条目的目的地,它指示故障源。faultactor属性的值是一个URI识别来源。不起最终作用的应用程序SOAP消息的目的地必须在中包含faultactor元素SOAP Fault元素。消息的最终目的地可能使用faultactor元素显式指示它生成了故障(另请参阅下面的详细元素)。"

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

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