在升级第三方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()调用来检查SOAPFault.hasFault()(saaj-impl-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 :(得分:1)
SOAP信封的名称空间标识符为“http://schemas.xmlsoap.org/soap/envelope/”
因此,消息不是有效的SOAP消息。由于SAAJ旨在遵循SOAP规范,因此无法处理该消息。