使用 WebServiceTemplate 设置自定义标题 [英] Setting Custom Header using WebServiceTemplate

查看:39
本文介绍了使用 WebServiceTemplate 设置自定义标题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在 Spring Boot 中使用 WebServiceTemplate 并使用 marshalSendAndReceive 调用目标服务.

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

如何在请求中设置自定义 HTTP 标头?

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

推荐答案

创建消息后,您需要使用 WebServiceMessageCallback 对其进行修改.

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
            }
        }
    });

因此,本质上,我们将 Web 服务消息转换为 SoapMessage 以修改标头.

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

这篇关于使用 WebServiceTemplate 设置自定义标题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆