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