0

检查标头 HttpRequestExecutingMessageHandler 我注意到一个常见的标头,accept-encoding,gzip,它在转换阶段在响应中引发异常,即无法转换消息,在响应中引发错误。这是我与使用的不延迟 HttpClient 相关的猜测。

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

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

但是在内部测试(使用 HTTP Rest 连接不同的集成实例)时,事情正常,即标题消息被正常处理(我不知道原因,因为出站 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();

**

4

1 回答 1

0

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

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

DefaultHttpHeaderMapper您可以考虑的另一个选项是setOutboundHeaderNames()配置一组标头模式以从消息传输到 HTTP 请求。当然,不包括提到的accept-encoding.

于 2018-05-21T15:32:20.817 回答