代码之家  ›  专栏  ›  技术社区  ›  Sheff

使用SOAP头处理错误

  •  1
  • Sheff  · 技术社区  · 17 年前

    我们正在开发一个新的Web服务,并正在研究返回SOAP响应错误的“最佳实践”。

    我们正在研究创建一个错误响应对象,每个响应都将包含一个属性。然而,这看起来有点重,并且想知道是否可以使用SOAP头来携带这些信息?您通常如何使用SOAP处理自定义错误?

    4 回复  |  直到 17 年前
        1
  •  1
  •   Ray Lu    17 年前

    soapfault用于保存错误和状态信息,并且服务器在HTTP头中返回500,以便将其状态为fault。

    参见w3.org中的规范

    http://www.w3.org/TR/2000/NOTE-SOAP-20000508/#_Toc478383507

    只要您为第三方清楚地记录了信息令牌,就可以通过将其放入SOAP头中,甚至在返回结果的元素中,来设计自己的信息令牌。然而,这不是提出错误的标准方法。

        2
  •  2
  •   Pop Catalin    17 年前

    SOAP已经使用自定义头来获取错误信息,您所需要做的就是在服务器端抛出一个异常,并在客户端作为 SoapException .

    如果希望对异常消息/信息有更多的控制,可以在服务器端抛出SOAPExceptions。

    编辑: 对于附加信息以及请求,可以使用自定义SOAP头。这里有一个 example article on CodeProject 使用自定义SOAP头进行身份验证,但自定义SOAP头可以用于其他目的,例如发送不一定是错误条件的额外信息(可以是业务逻辑信息)。

        3
  •  0
  •   Matt Lacey    17 年前

    我过去在复杂的操作中使用过类似的技术。尤其是当你需要(多个?)错误描述和错误代码。

        4
  •  0
  •   blerik    17 年前

    SOAP头用于带外信息,不应用于错误消息。此外,SOAP响应中不应使用SOAP头,因为:

    • 如果mustUnderstand丢失或为0,客户机可以安全地忽略它们。
    • 如果mustUnderstand是1,客户机就不能发出不理解的信号(因为这是一个响应)。

    是的,我知道一些WS-*标准描述了响应中的SOAP头…

    所以,

    对于严重到没有响应对象的错误,请使用SOAP错误。 将状态令牌添加到警告和信息消息的响应中。

    推荐文章