我们正在开发一项新的网络服务,并正在研究在肥皂响应中返回错误的“最佳实践”。

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

有帮助吗?

解决方案

SOAPFault用于保存错误和状态信息,服务器在HTTP标头中返回500,以便将其声明为错误。

参见W3.org的规范

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

您可以设置自己的信息令牌,方法是将其放入soap标题中,或者甚至在返回结果中的元素内,只要您为第三方清楚地记录它。然而,这不是提出错误的标准方法。

其他提示

Soap已经使用自定义标头来获取错误信息,您需要做的只是在服务器端抛出异常,并在客户端引发异常 SoapException

如果您想要更多地控制异常消息/信息,可以在服务器端抛出SoapExceptions。

编辑: 有关请求的额外信息,可以使用自定义soap标头。这是一个 CodeProject上的示例文章,它使用自定义soap标头进行身份验证,但是自定义soap标头可用于其他目的,例如发送不一定是错误条件的额外信息(可以是业务逻辑信息)

我过去曾使用类似的技术进行复杂的操作。特别是当您需要(多个?)错误描述以及错误代码时。

Soap 标头用于带外信息,不应用于错误消息。此外,肥皂头不应在肥皂响应中使用,因为:

  • 如果 MustUnderstand 缺失或为 0,客户端可以安全地忽略它们。
  • 如果 MustUnderstand 为 1,则客户端无法发出其不理解的信号(因为它是响应)。

是的,我知道一些 WS-* 标准在响应中描述了肥皂头......

所以,

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top