【问题标题】:SoapFault in PHP Soap Server (Error Handling)PHP Soap 服务器中的 SoapFault(错误处理)
【发布时间】:2013-07-25 13:09:46
【问题描述】:

我正在开发一个新的 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. 有些使用数组(“命名空间”,“错误代码”)。应该使用这个吗?以及命名空间的值应该是什么?
  2. 我认为故障字符串可以是用户的任何内容,例如“请先登录”。
  3. faultactor 的目的是什么?
  4. faultdetail 是一个包含故障额外详细信息的数组。什么样的细节?
  5. faultname 的用途是什么?
  6. headerfault 的目的是什么?

【问题讨论】:

    标签: php xml soap soapserver soapfault


    【解决方案1】:

    我认为通常不鼓励在一个 SO 问题中提出多个问题。此外,阅读the SOAP spec 的第 4.4 节“SOAP 错误”可以回答大部分问题。

    1. 故障码

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

    2. 故障字符串

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

    3. 过错因素

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

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

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

    【讨论】:

      猜你喜欢
      • 2015-02-27
      • 2018-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多