调用Camel Rest服务为我提供了401使用restlet

时间:2015-03-06 11:48:03

标签: rest ssl apache-camel restlet

我正在尝试写一条路线来呼叫一个宁静的服务。所有这些都没有身体但查询参数。当我打电话( https )时,其他服务我得到401(未经授权)。 但如果我使用简单的非ssl(http)并调用它在其他apis上工作正常。 这是我的路线和制作人模板。

路线

public static final String MONITOR_URI = "https://lsapi.thomson-pharma.com//ls-api-ws/ws/rs/opportunity-v1/match?drug=bevacizumab&company=Genentech Inc&fmt=json";

public static final String DIRECT_MONITOR = "direct:getDrugInfo";

from(DIRECT_MONITOR).to(MONITOR_URI).convertBodyTo(String.class);

=========================主类==================== ===========

public static void main(String[] args) throws Exception {
    CamelContext context = createCamelContext();
    context.start();
    final String text = "paracetamol";
    final String fmt = "json";
    final String authMethod = "Digest";
    final String authUsername = "TR_Internal_024";
    final String authPassword="ZTYA5S1KLF7WCDMN";
    final String query = String.format("text=%s&fmt=%s&authMethod=%s&authUsername=%s&authPassword=%s",text,fmt,authMethod,authUsername,authPassword);
    Map<String,Object> headers = new HashMap<String, Object>(){
        {
            put(Exchange.HTTP_METHOD,"POST");
            put(Exchange.AUTHENTICATION,"Digest");
            put("authUsername","TR_Internal_024");
            put("authPassword","ZTYA5S1KLF7WCDMN");
            put(Exchange.HTTP_QUERY,query);
        }
    };
   ProducerTemplate template = context.createProducerTemplate();

  String request = template.requestBodyAndHeaders(Constants.DIRECT_MONITOR,null,headers,String.class);
  System.out.println("Body is : "+request);
}
  1. 有人可以帮助您使用camel cxf或restlet配置SSL吗?
  2. 如何将凭据提供程序添加到CamelContext或Spring Context?

1 个答案:

答案 0 :(得分:0)

延迟的准则。通过从camelContext中重新获取组件,我得到了它的代码。

=============================================== ==========================

HttpComponent http = (HttpComponent) camelContext.getComponent("https");
        HttpClientConfigurer httpClientConfigurer = http.getHttpClientConfigurer();
        if(httpClientConfigurer == null){
            System.out.println("httpClientConfigurer is null");
            if(http.getHttpClientConfigurer() == null ){
                HttpConfiguration httpConfiguration = new HttpConfiguration();
                httpConfiguration.setAuthMethod(AuthMethod.Digest);
                httpConfiguration.setAuthUsername("xxxxx");
                httpConfiguration.setAuthPassword("xxxxxx");
                http.setHttpConfiguration(httpConfiguration);
            }
        }

此致 拉姆