【问题标题】:Setting Custom Header using WebServiceTemplate使用 WebServiceTemplate 设置自定义标头
【发布时间】:2018-07-20 11:58:50
【问题描述】:

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

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

【问题讨论】:

标签: java spring spring-boot


【解决方案1】:

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

 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 以修改标头。

【讨论】:

  • 谢谢!但我需要设置 HTTP 自定义标头而不是 SOAP 标头,因为我的请求是 REST/JSON。
猜你喜欢
  • 2016-08-28
  • 1970-01-01
  • 2012-07-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-06
  • 1970-01-01
  • 2014-02-21
  • 1970-01-01
相关资源
最近更新 更多