У меня проблема при использовании Rest Rest Service с RestTemplate в настольном приложении, в то время как проблема не появляется при использовании в веб-приложении.
Это журналы отладки
15:30:40.448 [main] DEBUG o.s.web.client.RestTemplate - Reading [java.util.List] as "application/json" using [org.springframework.http.converter.json.MappingJacksonHttpMessageConverter@98adae2]
15:30:40.452 [main] DEBUG httpclient.wire.content - << "[{"name":"Indonesia","id":1},{"name":"AlaySia","id":2},{"name":"Autraliya","id":3}]"
Исключение в потоке "main" java.lang.ClassCastException: java.util.LinkedHashMap нельзя преобразовать в com.mgm.domain.Country
И это код, который я использую.
String url = "http://localhost:8080/mgm/country";
List<MediaType> mediaTypes = new ArrayList<MediaType>();
mediaTypes.add(MediaType.APPLICATION_JSON);
HttpHeaders headers = new HttpHeaders();
headers.setAccept(mediaTypes);
HttpEntity<Country> httpEntity = new HttpEntity<Country>(null, headers);
try {
ResponseEntity<List> responseEntity = restTemplate.exchange(url, HttpMethod.GET, httpEntity, List.class);
List<Country> countries = responseEntity.getBody();
System.out.println(countries.get(0).getName());
} catch (RestClientException exception) {
exception.printStackTrace();
}
Приведенный выше код не выдает ошибок, когда я размещаю его в веб-приложении.Я использую Spring Rest MVC, чтобы обеспечить JSON и использовать его с RestTemplate.
Я думаю, что есть проблема, когда преобразование Джексона java.util.LinkedHashMap
в Country
.Кажется, что countries.get(0)
на самом деле имеет LinkedHashMap
тип, а не Country
, и проблема возникнет, когда я вызову один из Country
методов, подобных .getName()