解组SOAP错误JAXB?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (237)

我需要帮助来使用JAXB java类来解组SOAP响应

 <soapenv:Fault>
      <faultcode>soapenv:Server</faultcode>
      <faultstring>DLResponseException</faultstring>
      <detail>...
     ....

我用root元素创建了一个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:Fault”的前缀“soapenv”未绑定。

提问于
用户回答回答于

这个问题与Spring Integration无关,对Spring来说也没有。

当你有一个xml片段时,这是典型的JAXB情况。我理解这是SOAP响应的主体,但正如你所看到的那样,真正的命名空间soapenv是在SOAP信封的根目录上声明的。

扫码关注云+社区

领取腾讯云代金券