带有http URI的SOAP命名空间

时间:2017-01-16 17:17:48

标签: java-ee soap saaj

在升级第三方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?

谢谢。

1 个答案:

答案 0 :(得分:1)

根据SOAP 1.1 specification

  

SOAP信封的名称空间标识符为“http://schemas.xmlsoap.org/soap/envelope/

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