HEADERS上的Spring Integration HttpRequestExecutingMessageHandler问题

时间:2018-05-21 15:17:33

标签: spring spring-integration spring-integration-http

检查标头HttpRequestExecutingMessageHandler我注意到一个公共标题, accept-encoding,gzip在转换阶段在响应时抛出异常,即无法转换消息,在响应时抛出错误。我的猜测与使用的未使用的HttpClient有关。

默认情况下是否有理由将此标头放在RestTemplate上?使用标头过滤器删除标头,Rest请求正常运行。

此外,我尝试使用RestTemplate - 但标题仍然存在,所以只有标题过滤器工作。

但是在内部测试时(使用HTTP Rest连接不同的Integration实例)事情正常工作,即头文件消息正常处理(我不知道自出站RestServers出现问题以来的原因。

以下流程为例。

此致

**

IntegrationFlows.from("theRequestChannel")
                    .transform(Transformers.fromJson(MyClass.class))
                    .enrichHeaders(m -> m.header("app_id", "appid"))
                    .enrichHeaders(m -> m.header("app_key", "app_key"))
                    .headerFilter("accept-encoding")
                    .handle(myHandler())
                    .get();

**

1 个答案:

答案 0 :(得分:0)

完全不清楚你在问什么。 Spring Integration中没有accept-encoding自动标头。我可以假设你有一个HTTP入站通道适配器,这个标头由外部客户端发送给你的应用程序。

如果您需要调用的REST服务确实不喜欢这些标头,那么在执行请求之前,我们确实是filter此类标头的不错选择。 RestTemplate上未配置此类标头,因为您不会将其从那里排除,而是在到达RestTemplate之前进行过滤。

您可以考虑的另一个选项是DefaultHttpHeaderMapper,其setOutboundHeaderNames()用于配置一组标头模式,以便从邮件传输到HTTP请求。当然,不包括上面提到的accept-encoding