我需要访问使用基本身份验证的HTTPS资源,它是 GET 资源。我使用URIBuilder
在java中编写了一个代码,并将用户名,密码等作为Headers添加到URIBuilder
并使用Apache HTTPClient
来访问资源,它运行良好。
现在我的要求是使用 Apache Camel 实现相同的功能,我尝试使用 Camel HTTP组件并使用 Java DSL 。
问题是我只能提供URI
。但是如何在URI
添加各种标题?
答案 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");