Apache Camel中的HTTPS文件

时间:2015-10-28 16:28:42

标签: java apache-camel

我需要访问使用基本身份验证的HTTPS资源,它是 GET 资源。我使用URIBuilder在java中编写了一个代码,并将用户名,密码等作为Headers添加到URIBuilder并使用Apache HTTPClient来访问资源,它运行良好。

现在我的要求是使用 Apache Camel 实现相同的功能,我尝试使用 Camel HTTP组件并使用 Java DSL

问题是我只能提供URI。但是如何在URI添加各种标题?

2 个答案:

答案 0 :(得分:0)

我建议您使用http4 component作为使用此安全资源的方法。通过阅读组件的文档,您可以看到它可以在运行时设置查询参数,路径甚至是uri。

在回答您的具体问题时,交换机上到达.to()的标头将在HTTP请求中作为标头发送,因此您可能需要定义标头过滤器策略。它支持http basic auth,您可以通过authUsername和authPassword标头设置您的凭据。您可能需要提供自定义HttpContext,因为您在文档底部通过https进行身份验证。例如:

from("direct:in")
    .process(new Processor() {
        public void process(Exchange exchange) {
            //These headers you set here will get sent with the http request in the to() after this processor
            exchange.getIn().setHeader("authUsername", "username");
            exchange.getIn().setHeader("authPassword", "password");
        }
    })
    .to("https4://uri.com);

答案 1 :(得分:0)

如果使用蓝图,则使用简单语言添加标头;如果使用纯Java,则使用java dsl。简单的例子:

from("direct:start")
  .setHeader(Exchange.HTTP_METHOD, constant(org.apache.camel.component.http4.HttpMethods.POST))
  .to("http4://www.google.com")
  .to("mock:results");