检查标头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();
**
答案 0 :(得分:0)
完全不清楚你在问什么。 Spring Integration中没有accept-encoding
自动标头。我可以假设你有一个HTTP入站通道适配器,这个标头由外部客户端发送给你的应用程序。
如果您需要调用的REST服务确实不喜欢这些标头,那么在执行请求之前,我们确实是filter
此类标头的不错选择。 RestTemplate
上未配置此类标头,因为您不会将其从那里排除,而是在到达RestTemplate
之前进行过滤。
您可以考虑的另一个选项是DefaultHttpHeaderMapper
,其setOutboundHeaderNames()
用于配置一组标头模式,以便从邮件传输到HTTP请求。当然,不包括上面提到的accept-encoding
。