Spring RestTemplate 不工作
Spring RestTemplate not working
我使用 RestTemplate 在 Spring 中创建了应用程序,使用 Rest-Template 我正在使用一个外部 Web 服务,它有一个 header 接受为 "application/json"。在我的 Rest-Template 中,我添加了 header 但它仍然给了我以下异常
org.springframework.web.client.RestClientException: Could not extract response: no suitable HttpMessageConverter found for response type [class com.site.Employee] and content type [application/octet-stream]
我的代码如下
private static String BASE_URI = "http://localhost:8181/test/employee"
final HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.setAccept(Collections.singletonList(new MediaType("application", "json")));
requestHeaders.setContentType(new MediaType("application", "json"));
final HttpEntity<?> requestEntity = new HttpEntity<Object>(requestHeaders);
final RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
restTemplate.getMessageConverters().add(new StringHttpMessageConverter());
final ResponseEntity<Employee> responseEntity = restTemplate.exchange(BASE_URI, HttpMethod.GET, requestEntity, Employee.class);
谁能告诉我一些解决方案
更新 1
当我尝试下面的代码时,它工作正常
final ResponseEntity<String> responseEntity = restTemplate.exchange(BASE_URI, HttpMethod.GET, requestEntity, String.class);
Employee employee = new ObjectMapper().readValue(responseEntity.getBody(), Employee.class);
您需要将 application/octet-stream
添加到 MappingJackson2HttpMessageConverter
中支持的 mimetypes 列表中:
final MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
mappingJackson2HttpMessageConverter.setSupportedMediaTypes(Arrays.asList(MediaType.APPLICATION_JSON, MediaType.APPLICATION_OCTET_STREAM));
restTemplate.getMessageConverters().add(mappingJackson2HttpMessageConverter);
我使用 RestTemplate 在 Spring 中创建了应用程序,使用 Rest-Template 我正在使用一个外部 Web 服务,它有一个 header 接受为 "application/json"。在我的 Rest-Template 中,我添加了 header 但它仍然给了我以下异常
org.springframework.web.client.RestClientException: Could not extract response: no suitable HttpMessageConverter found for response type [class com.site.Employee] and content type [application/octet-stream]
我的代码如下
private static String BASE_URI = "http://localhost:8181/test/employee"
final HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.setAccept(Collections.singletonList(new MediaType("application", "json")));
requestHeaders.setContentType(new MediaType("application", "json"));
final HttpEntity<?> requestEntity = new HttpEntity<Object>(requestHeaders);
final RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
restTemplate.getMessageConverters().add(new StringHttpMessageConverter());
final ResponseEntity<Employee> responseEntity = restTemplate.exchange(BASE_URI, HttpMethod.GET, requestEntity, Employee.class);
谁能告诉我一些解决方案
更新 1
当我尝试下面的代码时,它工作正常
final ResponseEntity<String> responseEntity = restTemplate.exchange(BASE_URI, HttpMethod.GET, requestEntity, String.class);
Employee employee = new ObjectMapper().readValue(responseEntity.getBody(), Employee.class);
您需要将 application/octet-stream
添加到 MappingJackson2HttpMessageConverter
中支持的 mimetypes 列表中:
final MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
mappingJackson2HttpMessageConverter.setSupportedMediaTypes(Arrays.asList(MediaType.APPLICATION_JSON, MediaType.APPLICATION_OCTET_STREAM));
restTemplate.getMessageConverters().add(mappingJackson2HttpMessageConverter);