如何仅保留特定 header 但删除所有其他 header ?
我正在尝试删除由上游 HttpRequestHandlingMessagingGateway
设置的不相关 header 。
我尝试指定一个 handle()
函数,该函数返回一条仅包含我感兴趣的 header 的新消息,但它似乎不起作用。日志消息包含一堆从上游 HttpRequestHandlingMessagingGateway
设置的 HTTP header 。
IntegrationFlows.from(myChannel())
// Strip off the HTTP specific headers
.handle((payload, headers) -> MessageBuilder
.withPayload(payload)
.setHeader("myCustomHeader1", headers.get("myCustomHeader1", String.class))
.setHeader("myCustomHeader2", headers.get("myCustomHeader2", String.class))
.build()
)
.log()
我看到有一个 HeaderFilter但它要求您知道要删除的 header 的名称。就我而言,我只想保留 2 个自定义 header 并删除其他所有内容。
最佳答案
class HeaderStripper {
public Message<?> strip(Message<?> msg) {
return org.springframework.integration.support.MessageBuilder.withPayload(msg.getPayload())
.setHeader("foo", msg.getHeaders().get("foo"))
.setHeader("bar", msg.getHeaders().get("bar"))
.build();
}
}
然后
.transform(new HeaderStripper())
关于java - 如何只保留一些邮件标题并删除所有其他邮件标题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60983611/