2015-03-02 4 views
1

Я создаю restful API, который будет потреблять json с сервера. Но я получаю исключение Фолля:org.springframework.web.client.RestClientException: Не удалось извлечь ответ:

org.springframework.web.client.RestClientException: Не удалось извлечь ответ: нет подходящего HttpMessageConverter найдено для типа реакции [[Lexamples.dto.DummyDTO;] и тип содержимого [ text/json; charset = utf-8] at org.springframework.web.client.HttpMessageConverterExtractor.extractData (HttpMessageConverterExtractor.java:84) at org.springframework.web.client.RestTemplate.doExecute (RestTemplate.java:454) на org.springframework.web.client.RestTemplate.execute (RestTemplate.java:409) в org.springframework.web.client.RestTemplate.getForObject (RestTemplate.java:207) в sun.reflect.NativeMethodAccessorImpl.invoke0 (натуральный Метод ив) на sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39) на sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25) в java.lang.reflect.Method.invoke (Method.java : 597) в org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite $ PojoCachedMethodSite.invoke (PojoMetaMethodSite.java:189) в org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call (PojoMetaMethodSite.java:53) на org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall (CallSiteArray.java:45) на org.codehaus.groovy.runtime.callsite.AbstractCallSite.call (AbstractCallSite.java:108) на org.codehaus.groovy .runtime.callsite.AbstractCallSite.call (AbstractCallSite.java:120)

Фрагмент кода:

List<HttpMessageConverter<?>> msgConverters = restTemplate.getMessageConverters(); 
msgConverters.add(new MappingJacksonHttpMessageConverter()); 
restTemplate.setMessageConverters(msgConverters); 
DummyDTO[] dummy= restTemplate.getForObject(URI, DummyDTO[].class); 

контроллер код метода:

public UserDTO[] getUserList(){ 
      List<MediaType> acceptableMediaTypes = new ArrayList<MediaType>(); 
      acceptableMediaTypes.add(MediaType.APPLICATION_JSON); 

     // Set the Accept and Content type header 
      HttpHeaders headers = new HttpHeaders(); 
      headers.setContentType(MediaType.APPLICATION_JSON); 
      headers.setAccept(acceptableMediaTypes); 
      HttpEntity<?> entity = new HttpEntity<Object>(headers); 

      // Add the Jackson message converter 
      List<HttpMessageConverter<?>> msgConverters = restTemplate.getMessageConverters(); 
      msgConverters.add(new MappingJacksonHttpMessageConverter()); 
      restTemplate.setMessageConverters(msgConverters); 

      // Make the HTTP GET request, marshalling the response from JSON to an array of Users 
      ResponseEntity<UserDTO[]> responseEntity = restTemplate.exchange("http://server.com",HttpMethod.GET, entity, UserDTO[].class); 
      return responseEntity.getBody(); 
     } 

Пожалуйста, скажите мне, где я буду неправильно

+1

попробуйте вернуть тип как приложение/json вместо текста/json и предоставить код контроллера. – rishman

+0

@rishman Чтобы изменить тип контента в application/json, я внесла изменения в существующий метод. По-прежнему получается такая же ошибка. Я отредактировал мое сообщение, чтобы включить код контроллера – Manisha

ответ

2

Похоже, вы изменить тип содержимого для запроса, но " application/json "должны быть в заголовках ответов, а тот факт, что у вас все еще есть одно и то же исключение, говорит о том, что у вас неправильный тип носителя" text/js на "в ответе нет таких media type in HTTP. Просто посмотрите на реализацию restTemplate.exchange("http://server.com",HttpMethod.GET, entity, UserDTO[].class);, там проблема должна быть.

+0

. Да, проблема была в типе ответа. как только я изменил его на приложение/json, все сработало! Благодаря! – Manisha