使用 Soap 标头进行错误处理
-
04-07-2019 - |
题
我们正在开发一项新的网络服务,并正在研究在肥皂响应中返回错误的“最佳实践”。
我们正在研究创建一个错误响应对象,每个响应都将包含该对象作为属性。然而,这似乎有点繁重,并且想知道是否可以使用 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-* 标准在响应中描述了肥皂头......
所以,
对于严重到没有响应对象的错误,请使用肥皂故障。将状态令牌添加到警告和信息消息的响应中。
不隶属于 StackOverflow