Мы разрабатываем приложение для вызова веб-службы поставщика, если поставщик ожидает строку XML в сегменте CDATA.Как показано ниже
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<AppsAcord:tem>
<AcordXML:tem><![CDATA[<element>text</element>]]></AcordXML:tem>
</AppsAcord:tem>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Код, который мы написали, прекрасно работает в автономном режиме.
public static void main(String[] args) {
try{
MessageFactory factory = MessageFactory.newInstance();
SOAPMessage soapMsg = factory.createMessage();
SOAPPart part = soapMsg.getSOAPPart();
SOAPEnvelope envelope = part.getEnvelope();
SOAPHeader header = envelope.getHeader();
SOAPBody body = envelope.getBody();
SOAPBodyElement element = body.addBodyElement(envelope.createName("tem", "AppsAcord", null));
SOAPBodyElement element2 = body.addBodyElement(envelope.createName("tem", "AcordXML", null));
element.appendChild(element2);
CDATASection cdata = part.createCDATASection("<![CDATA[<element>text</element>]]>");
element2.appendChild(cdata);
soapMsg.writeTo(System.out);
System.out.println();
System.out.println("SOAP msg created");
}catch(Exception e){
e.printStackTrace();
}
}
Однако, как только мы поместим его в приложение с загрузочной пружиной, результат будет выглядеть примерно так
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<AppsAcord:tem>
<AcordXML:tem><element>text</element></AcordXML:tem>
</AppsAcord:tem>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Любые мысли о том, почему результат будет другим и что мы можем сделать, чтобы решить эту проблему.
Майк