无法在Camel http组件URI上设置协议版本

时间:2013-09-30 15:09:59

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

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

关注Camel http component documentation我尝试使用以下URI:

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

但是,camel上下文初始化失败,并带有消息:

的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参数,但宁愿使用不需要自定义代码的解决方案。

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我提出了以下解决方案。

在http-component网址上,我设置了自定义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
      }
  }
}