Как установить версию протокола HTTP при использовании Spring restTemplate.exchange? - PullRequest
0 голосов
/ 19 января 2020

Я использую Spring Framework restTemplate.exchange метод для выполнения HTTPS GET вызова и сопоставления объекта ответа с классом сущности, как показано ниже. Целевой сервер дает успешный ответ, только когда я отправляю запрос с протоколом HTTP версии 1.1 ( HTTP1.1 ). Я проверил это с помощью команды curl. RestTemplate использует HTTP1.2 по умолчанию. Я использую Apache HTTP Client v4.3, в котором httpClient.getParams устарело. Поэтому я не могу установить версию протокола HTTP, используя метод getParams. Есть ли другой способ установить версию протокола http как HTTP1.1 при использовании метода restTemplate.exchange?

@Autowired
CloseableHttpClient httpClient;

@Bean
public RestTemplate restTemplate() {
    RestTemplate restTemplate = new RestTemplate(clientHttpRequestFactory());
    return restTemplate;
}

@Bean
public HttpComponentsClientHttpRequestFactory clientHttpRequestFactory() {
    HttpComponentsClientHttpRequestFactory clientHttpRequestFactory = new 
        HttpComponentsClientHttpRequestFactory();
    clientHttpRequestFactory.setHttpClient(httpClient);
    return clientHttpRequestFactory;
}

public ResponseEntity<Foo> getResponse(){
    RestTemplate restTemplate = restTemplate();
    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.APPLICATION_JSON);
    HttpEntity entity = new HttpEntity(headers);

    ResponseEntity<Foo> response = restTemplate
       .exchange(fooResourceUrl, HttpMethod.GET, entity, Foo.class);

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