【发布时间】: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