MKP010
MKP010

Reputation: 71

Setting Custom Header using WebServiceTemplate

I am using WebServiceTemplate in spring boot and invoking the target service using marshalSendAndReceive.

How can I set a custom HTTP header in the request?

Upvotes: 3

Views: 7647

Answers (1)

priteshbaviskar
priteshbaviskar

Reputation: 2327

You need to use a WebServiceMessageCallback to modify a message after its creation.

 webServiceTemplate.marshalSendAndReceive(o, new WebServiceMessageCallback() {

        public void doWithMessage(WebServiceMessage message) {
            try {
                SoapMessage soapMessage = (SoapMessage)message;
                SoapHeader header = soapMessage.getSoapHeader();
                StringSource headerSource = new StringSource("<credentials xmlns=\"http://google.com/profile\">\n +
                        <token>"+customToken"+</token>\n +
                        </credentials>");
                Transformer transformer = TransformerFactory.newInstance().newTransformer();
                transformer.transform(headerSource, header.getResult());
            } catch (Exception e) {
                // something went wrong
            }
        }
    });

So, essentially, we are transforming a web service message to SoapMessage to modify header.

Upvotes: 3

Related Questions