【问题标题】:SOAP Namespace with http URI带有 http URI 的 SOAP 命名空间
【发布时间】:2017-01-16 17:17:48
【问题描述】:

在升级第 3 方 SOAP API 期间,供应商已将其响应更改为返回

<env:Envelope xmlns:env='https://schemas.xmlsoap.org/soap/envelope/'>...

而不是以前

<env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'>... 

注意从 http 到 https 的变化。

这是否有效?

背景:我们的 Java 客户端代码尝试通过调用 com.sun.xml.messaging.saaj.soap.MessageImpl.getSOAPBody().hasFault() (saaj-impl-1.3.jar) 来检查 SOAPFault失败,因为 JavaEE 标准将 URI_NS_SOAP_ENVELOPE 指定为 http URI。返回 API 的 https 响应时,URI 不匹配并且

Jan 16, 2017 3:47:05 PM com.sun.xml.messaging.saaj.soap.SOAPPartImpl lookForEnvelope
SEVERE: SAAJ0513: Unable to create envelope from given source because the namespace was not recognized

返回。

作为一种解决方法,是否可以覆盖 SAAJ 库行为以强制使用 http SOAP URI?

谢谢。

【问题讨论】:

  • 有关其他信息,如果其他人遇到类似情况 - 我今天早上发现托管 API 的服务器位于负载平衡器后面。正是这一点重写了所有响应并将所有“http”实例替换为“https”,而不是供应商的升级。

标签: jakarta-ee soap saaj


【解决方案1】:

根据SOAP 1.1 specification

SOAP 信封具有命名空间标识符“http://schemas.xmlsoap.org/soap/envelope/

因此该消息不是有效的 SOAP 消息。由于 SAAJ 旨在遵循 SOAP 规范,因此它无法处理该消息。

【讨论】:

  • 感谢您的确认。
猜你喜欢
  • 2015-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-24
  • 2015-05-13
  • 1970-01-01
相关资源
最近更新 更多