2015-10-28 66 views
0

我需要訪問使用基本身份驗證的HTTPS資源,它是一個GET資源。我使用URIBuilder在java中編寫了一個代碼,並將用戶名,密碼等作爲標題添加到URIBuilder,並使用Apache HTTPClient訪問資源,並且運行良好。HTTPS到Apache Camel中的文件

現在,我的要求是實現使用Apache的駱駝相同的功能,那麼我嘗試使用駱駝 HTTP組件,並通過使用Java的DSL。問題是我只能提供URI。但是,我怎樣才能在這個URI?上添加各種標題。

回答

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); 
+0

我檢查了你說的話。但是,我應該如何在駝峯中將頭添加到URI中,就像我在Java中一樣。我也檢查了HttpContext類,但它沒有方法來添加標題。 – Ishada

+0

你不用在exchange上用exchange.getIn()。setHeader(「authUsername」,「username」); – fiw

+0

感謝您的代碼。現在我可以在HTTP中添加所需的所有標題。但代碼仍然無法正常工作,控制檯上沒有輸出。 – Ishada

0

如果您使用的是藍圖或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");