0

要禁用 HTTP 连接持久性,我想使用 http 组件在我的 Apache Camel 路由之一上强制执行 HTTP 协议 1.0。

在 Camel 的http 组件文档之后,我尝试使用以下 URI:

http://localhost:8888/foo?httpClient.protocolVersion=HTTP/1.0

但是,骆驼上下文初始化失败并出现 ResolveEndpointFailedException 消息:

Unknown parameters=[{protocolVersion=HTTP/1.0}]

由于HttpClientParam 文档,我假设协议版本参数可用。有趣的是,Apache Camel 文档中的 soTimeout 示例运行良好。

我尝试了 http 和 http4 组件。我使用 Apache Camel 2.10.4。http 组件具有用户代理 Jakarta Commons-HttpClient/3.1。

我知道我也可以尝试使用 http 组件的 httpClientConfigurer 和/或 clientConnectionManager 参数,但宁愿使用不需要自定义代码的解决方案。

提前感谢您的帮助!

4

1 回答 1

0

我想出了以下解决方案。

在 http-component URL 上,我设置了一个自定义httpClientConfigurer

http://localhost:8080/foo?httpClientConfigurer=myHttpClientConfigurer

哪里myHttpClientConfigurer是一个实现类似于此的 bean:

public class Http10ClientConfigurer implements HttpClientConfigurer {
  @Override
  public void configureHttpClient(HttpClient httpClient) {
      if (httpClient.getParams() != null) {
          httpClient.getParams().setVersion(new HttpVersion(1, 0));
      } else {
          // Could not set HTTP 1.0 version on httpClient
      }
  }
}
于 2013-10-14T12:42:42.060 回答