Spring Integration Http OutboundGateway PUT с параметрами заголовка - PullRequest
1 голос
/ 02 мая 2020

Я пытаюсь сделать PUT на удаленной конечной точке REST, для которой мне нужно предоставить учетные данные как часть заголовков, но пока безуспешно.

Подход 1:

    @Bean
    public IntegrationFlow outboundGateway() {
        return flow -> flow
                .transform(transformer)
                .enrichHeaders(h -> h.header("x-api-key", "secret123")
                                     .header("contentType", MediaType.APPLICATION_JSON))
                .handle(Http.outboundGateway("https://remote-service.com/car")
                        .mappedRequestHeaders()
                .httpMethod(HttpMethod.PUT)
                .expectedResponseType(String.class))
                .log();
    }

Я продолжаю получать 403 Запрещено.

Я достиг того же с помощью RestTemplate так легко:

HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<>(getHeaders());
restTemplate.put("https://remote-service.com/car", request);
...

    private HttpHeaders getHeaders() {
        HttpHeaders headers = new HttpHeaders();
        headers.add("x-api-key", "secret123");
        return headers;
    }

Как я могу отправить этот заголовок x-api-key и его значение с помощью Http OutboundGateway?

Спасибо.

1 Ответ

1 голос
/ 02 мая 2020

x-api-key - это не стандартный http-заголовок, поэтому вам нужно сделать так, чтобы его передавали:

 .mappedRequestHeaders(*)

Для ваших Http.outboundGateway().

Подробнее см. В документации. : https://docs.spring.io/spring-integration/docs/5.2.6.RELEASE/reference/html/http.html#http - отображение заголовка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...