【问题标题】:Cannot set protocol version on Camel http component URI无法在 Camel http 组件 URI 上设置协议版本
【发布时间】:2013-09-30 15:09:58
【问题描述】:

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

按照骆驼的http component documentation,我尝试使用以下URI:

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

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

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

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

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

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

提前感谢您的帮助!

【问题讨论】:

    标签: apache-camel apache-httpclient-4.x apache-commons-httpclient


    【解决方案1】:

    我想出了以下解决方案。

    在 http 组件 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
          }
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2015-03-21
      • 2016-04-15
      • 2018-08-08
      • 2017-09-25
      • 1970-01-01
      • 2020-08-15
      • 2021-06-03
      • 2015-10-22
      • 1970-01-01
      相关资源
      最近更新 更多