2016-06-09 12 views
0

fand ich diese Störung erhalte, wenn die RestTemplate Methode aufrufenRestTemplate RestClientException konnte nicht Antwort extrahieren: keine geeignete HttpMessageConverter

GetStatusRestfulResponse response = restTemplate.getForObject(restRequest.getUrl(), GetStatusRestfulResponse.class,restRequest.getParams()); 

>org.springframework.web.client.RestClientException: Could not extract response: no suitable HttpMessageConverter found for response type [class GetStatusRestfulResponse] and content type [application/json] 
at org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:108) 
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:550) 
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:511) 
at org.springframework.web.client.RestTemplate.getForObject(RestTemplate.java:248) 

RestTemplate restTemplate = new RestTemplate(); 
    HttpClient httpClient = HttpClientBuilder.create().setDefaultCredentialsProvider(setupAuthentication(restRequest)).build(); 
    HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(httpClient); 
    requestFactory.setReadTimeout(restRequest.getReqTimeOut()); 
    restTemplate.setRequestFactory(requestFactory); 
    restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter()); 
response = restTemplate.getForObject(restRequest.getUrl(),  GetStatusRestfulResponse.class,restRequest.getParams());  

Antwort

2

ich in der Lage war, das Problem zu lösen. Der Schuldige war das Java-Objekt, das ich GetStatusRestfulResponse verwendet habe. Ich habe die folgenden Schritte ausgeführt, um das Problem zu debuggen.

  1. Die Quellcodes für spring-web und jackson-databind haben.
  2. auf Debugging im Frühjahr und Jackson Quellcode, erkannte, dass das Problem mit dem ObjectMapper war nicht in der Lage, das Java-Objekt deserialisieren.
  3. Das Problem war, dass mein Java-Objekt innere Klassen hatte.

, um das Problem mit ObjectMapper nicht in der Lage zu deserialisieren das Java-Objekt zu beheben, musste ich

  1. Add Standard keine Parameter Konstrukteuren für das Haupt Java-Klasse und innere Klassen.

  2. Die inneren Klassen wurden statisch gemacht.

dies löste das Problem :)

Verwandte Themen