java - 使用 WebServiceTemplate 设置自定义 header

标签 java spring spring-boot

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

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

最佳答案

您需要使用 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 来修改 header 。

关于java - 使用 WebServiceTemplate 设置自定义 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51442044/

相关文章:

Java公历计时器

java - 拆分问题(字符串正则表达式)

java - onCreate 中的 SQLite 错误

java - Spring Boot AOP 不适用于 AfterThrow

java - 如何使用 Openapi Generator 从 Swagger yaml 生成 SpringBoot 模型

spring - 使用 spring boot starter 暴露 GraphqlExceptions

java - stmt.executeUpdate() 返回 java.sql.SQLException : ORA-01722: invalid number

spring - 8080 端口已在 eclipse 中使用

java - Jackson ObjectMapper 中的惰性对象未转换为 null

java - 全局设置 hibernate 'default-cascade' 属性