Добавление заголовка к каждому вызову с использованием RestTemplate - PullRequest
0 голосов
/ 20 февраля 2019

Я хочу вызвать сторонний API и для этого мне необходимо отправить свой ключ подписки.Я пытался добавить к RestTemplate через конфигурацию bean, но это не работает.

@Configuration
public class RequestHeaderConfig {

    private ClientHttpResponse intercept(HttpRequest request, byte[] body,
                                        ClientHttpRequestExecution execution) throws IOException {
        ClientHttpResponse response = execution.execute(request, body);
        response.getHeaders().add("Subscription","9999999-999b-4999-99995-9999999999d");
        return response;

    }

    @Bean
    public RestTemplate restTemplate() {
        RestTemplate restTemplate = new RestTemplate();
        restTemplate.setInterceptors(Collections.singletonList(this::intercept));
        return restTemplate;
    }

}

Затем я autowire это в конструкторе:

@Autowired
public Service(RestTemplate restTemplate) {
    this.restTemplate = restTemplate;
}

и использоватьэто здесь:

restTemplate.exchange(builder.toUriString(), HttpMethod.GET, request, String.class);

Советы?

1 Ответ

0 голосов
/ 20 февраля 2019

вызовите сторонний API, и для этого я должен отправить свой ключ подписки.

Вы должны установить заголовок для объекта request, а не response.

      private ClientHttpResponse intercept(HttpRequest request, byte[] body,
                                            ClientHttpRequestExecution execution) throws IOException {
            request.getHeaders().add("Subscription","9999999-999b-4999-99995-9999999999d");
            ClientHttpResponse response = execution.execute(request, body);
            return response;

        }
...