我需要帮助解封SOAP响应使用JAXB java类
<soapenv:Fault>
<faultcode>soapenv:Server</faultcode>
<faultstring>DLResponseException</faultstring>
<detail>...
....
我创建了一个带有根元素的java类,如下所示
@XmlRootElement(name="Fault", namespace="http://schemas.xmlsoap.org/soap/envelope/")
public class MFaultResponse{
..
}
使用:
InputStream is = new ByteArrayInputStream(sample.getBytes());
JAXBContext jaxbContext = JAXBContext.newInstance(MFaultResponse.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
MFaultResponse response= (MFaultResponse) jaxbUnmarshaller.unmarshal(is);
System.out.println(response.getFaultCode());
异常:
由: org.xml.sax.SAXParseException;lineNumber: 1;columnNumber: 16引起;未绑定元素“soapenv:columnNumber”的前缀"soapenv“。
发布于 2018-07-24 04:16:37
这个问题与Spring集成无关,也与Spring无关。
当您有一个xml片段时,这是典型的JAXB情况。我知道这是SOAP响应的主体,但正如您所看到的,该soapenv
的实际名称空间是在SOAP信封的根上声明的。
如果没有前缀,您可以解组文档,但是因为它是关于片段,而不是整个SOAP响应,所以我建议使用手动XPath来提取这3个标记值,并手动构建这样一个MFaultResponse
。
我不确定为什么Spring WS中的标准SoapFault
方法对您不起作用。
https://stackoverflow.com/questions/51486336
复制相似问题