Hi everyone (this is my first post on this mailing-list)

I would like to modify an outgoing SOAP Request. I would like to remove 2
xml nodes from the Envelope's body. I managed to set up an Interceptor and
get the generated String value of the message set to the endpoint.

However, the following code does not seem to work as the outgoing message is
not edited as expected. Does anyone have some code or ideas on how to do
this?

public class MyOutInterceptor extends AbstractSoapInterceptor {

public MyOutInterceptor() {
        super(Phase.SEND);
}

public void handleMessage(SoapMessage message) throws Fault {
        // Get message content for dirty editing...
        StringWriter writer = new StringWriter();
        CachedOutputStream cos  =
(CachedOutputStream)message.getContent(OutputStream.class);
        InputStream inputStream = cos.getInputStream();
        IOUtils.copy(inputStream, writer, "UTF-8");
        String content = writer.toString();

        // remove the substrings from envelope...
        content = content.replace("<idJustification>0</idJustification>",
"");
        content = content.replace("<indicRdv>false</indicRdv>", "");
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        outputStream.write(content.getBytes(Charset.forName("UTF-8")));
        message.setContent(OutputStream.class, outputStream);
}

Am I missing something? What is a better way to to this?
It seems too complicated to achieve my pretty simple requirement...

Reply via email to