我需要訪問使用基本身份驗證的HTTPS資源,它是一個GET資源。我使用URIBuilder
在java中編寫了一個代碼,並將用戶名,密碼等作爲標題添加到URIBuilder
,並使用Apache HTTPClient
訪問資源,並且運行良好。HTTPS到Apache Camel中的文件
現在,我的要求是實現使用Apache的駱駝相同的功能,那麼我嘗試使用駱駝 HTTP組件,並通過使用Java的DSL。問題是我只能提供URI
。但是,我怎樣才能在這個URI
?上添加各種標題。
我需要訪問使用基本身份驗證的HTTPS資源,它是一個GET資源。我使用URIBuilder
在java中編寫了一個代碼,並將用戶名,密碼等作爲標題添加到URIBuilder
,並使用Apache HTTPClient
訪問資源,並且運行良好。HTTPS到Apache Camel中的文件
現在,我的要求是實現使用Apache的駱駝相同的功能,那麼我嘗試使用駱駝 HTTP組件,並通過使用Java的DSL。問題是我只能提供URI
。但是,我怎樣才能在這個URI
?上添加各種標題。
我建議您使用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);
如果您使用的是藍圖或java dsl(如果其純Java),則使用簡單的語言添加標題。簡單的例子:
from("direct:start")
.setHeader(Exchange.HTTP_METHOD, constant(org.apache.camel.component.http4.HttpMethods.POST))
.to("http4://www.google.com")
.to("mock:results");
我檢查了你說的話。但是,我應該如何在駝峯中將頭添加到URI中,就像我在Java中一樣。我也檢查了HttpContext類,但它沒有方法來添加標題。 – Ishada
你不用在exchange上用exchange.getIn()。setHeader(「authUsername」,「username」); – fiw
感謝您的代碼。現在我可以在HTTP中添加所需的所有標題。但代碼仍然無法正常工作,控制檯上沒有輸出。 – Ishada