【问题标题】:Spring Integration HttpRequestExecutingMessageHandler issue on HEADERSHEADERS 上的 Spring Integration HttpRequestExecutingMessageHandler 问题
【发布时间】:2018-05-21 15:17:33
【问题描述】:

检查标头 HttpRequestExecutingMessageHandler 我注意到一个常见的标头, 接受编码,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();

**

【问题讨论】:

  • 抱歉有些错别字..."undelaying " "underlaying"...

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


【解决方案1】:

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

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

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

【讨论】:

  • 事实上,我使用了 setOutboundHeaderNames..并将标题放在“*”...实际上 UnitTest 使用了 HC...例如 CloseableHttpClient httpclient = HttpClients.createDefault();而且我没有在 HC 客户端上设置任何标题。
  • 将测试更改为 SOAPUI 看看会发生什么。
  • 你是对的...使用 HCHttpComponents 的 SOAPUI 正在添加 content-encoding:gzip,deflate... POST localhost:8080/enroll HTTP/1.1 Accept-Encoding: gzip,deflate Content-Type: application /json 内容长度:108 主机:localhost:8080 连接:保持活动用户代理:Apache-HttpClient/4.1.1 (java 1.5)
  • 但不完全理解的是为什么我需要过滤请求以避免响应异常。因为在将响应从 JSON 转换为 Object 时抛出异常。
  • 因为传入的 HTTP 标头默认映射到消息标头。当我们发送 HTTP 请求时,默认情况下我们还会映射所有标头。正如我所说:您从外部请求收到该标头给您的应用程序。为什么这样的 gzip accept-encoding 对您不起作用是另一回事,您应该咨询 REST 服务的供应商。
猜你喜欢
  • 1970-01-01
  • 2022-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-16
  • 1970-01-01
  • 1970-01-01
  • 2017-07-30
相关资源
最近更新 更多