首页 文章

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

提问于
浏览
2

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

以下行用于调用SoapFault:

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

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

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

  • 我可以使用我自己的自定义错误代码,如"Auth"或"Error55" .

  • 有些使用数组("namespace","errorcode") . 这应该用吗?命名空间的 Value 应该是什么?

  • 我假设faultstring可以是用户的任何东西,如"Please login first" .

  • faultactor的目的是什么?

  • faultdetail是一个包含故障额外细节的数组 . 什么样的细节?

  • faultname的目的是什么?

  • headerfault的目的是什么?

1 回答

  • 1

    我相信通常不鼓励在一个SO问题中提出多个问题 . 此外,大部分内容将通过阅读the SOAP spec的第4.4节"SOAP Fault"来回答 .

    • faultcode

    faultcode元素旨在供软件使用,以提供用于识别故障的算法机制 . 故障代码必须出现在SOAP Fault元素中,faultcode值必须是第3节中定义的限定名称.SOAP定义了一小组SOAP故障代码,涵盖了基本的SOAP故障... [default] faultcode values的名称空间标识符是“http://schemas.xmlsoap.org/soap/envelope/”

    • faultstring

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

    • faultactor

    “faultactor元素旨在提供有关谁在错误路径中发生错误的信息(请参阅第2节) . 它类似于SOAP actor属性(请参阅第4.2.2节),而不是指示目标头条目,它指示错误的来源.faultactor属性的值是标识源的URI . 不充当SOAP消息的最终目的地的应用程序必须包括SOAP Fault元素中的faultactor元素 . 消息的目的地可以使用faultactor元素明确指出它产生了错误(另请参见下面的详细信息元素) . “

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

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

相关问题