2016-10-25 2 views
1

Мы пытаемся вызвать REST API, используя HTTP OutboundGateway, используя DSL. Мы можем сделать вызов, используя GET и POST, и получим ответ, как ожидалось. Однако мы не смогли определить способ передачи заголовков http при выполнении этого вызова с использованием DSL. Есть довольно много статей о XML подходе, но не смог найти документацию с DSLВесенняя интеграция dsl http outboundgateway

return IntegrationFlows.from("FileContentChannel") 
       .handle(Http.outboundGateway("http://host:port/paymentinfo/") 
         .charset("UTF-8") 
         .httpMethod(HttpMethod.GET) 
         .headerMapper(headers) 
         .expectedResponseType(String.class)) 
       .channel(MessageChannels.queue("APIResponseChannel")) 
       .get(); 

Мы пытались с DefaultHttpHeaderMapper как хорошо, но он не работал. Не могли бы вы направить нас на это?

Благодаря Gary..it работал с этим Update1

return IntegrationFlows.from("FileContentChannel") 
        .handle(Http.outboundGateway("http://host:port/paymentinfo/") 
          .charset("UTF-8") 
          .httpMethod(HttpMethod.GET) 
          .mappedRequestHeaders("pay*") 
          .headerMapper(headerMapper()) 
          .expectedResponseType(String.class)) 
        .channel(MessageChannels.queue("APIResponseChannel")) 
        .get(); 

@Bean 
    HeaderMapper headerMapper() { 
     DefaultHttpHeaderMapper headerMapper = new DefaultHttpHeaderMapper(); 
     String[] headerNames = {"payment-hdr1","payment-hdr2"}; 
     headerMapper.setOutboundHeaderNames(headerNames); 

     headerMapper.setUserDefinedHeaderPrefix(""); 
     return headerMapper; 
    } 

ответ

0
return IntegrationFlows.from("FileContentChannel") 
      .enrichHeaders(h -> h.header("foo1", "bar") 
            .header("foo2", "baz")) 
      .handle(Http.outboundGateway("http://host:port/paymentinfo/") 
        .charset("UTF-8") 
        .httpMethod(HttpMethod.GET) 
        .mappedRequestHeaders("foo*") 
        .expectedResponseType(String.class)) 
      .channel(MessageChannels.queue("APIResponseChannel")) 
      .get(); 

Пользовательские заголовки будут (в настоящее время) получить X- префикс.

Чтобы избежать этого, используйте настраиваемый DefaultHeaderMapper, чтобы отобразить требуемые шаблоны заголовков и используйте userDefinedHeaderPrefix из "".

Смежные вопросы