2017-01-16 67 views
0

SOAP命名空间在第三方SOAP API的升级,厂商已经改变了他们的反应返回以http URI

<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()的调用来检查的SOAPFault hasFault()(SAAJ-implement执行-1.3.jar。 ),因为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?

谢谢。

+0

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

回答