Я использую 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;
}