2014-02-25 2 views
0

Spring과 Jackson을 사용하여 RESTful WS를 사용하고 싶다.Spring MVC와 Jackson을 사용하여 RESTful WS 사용하기

@Controller 
public class ConsumeWSController { 

    @RequestMapping(value = "/consumews", method = RequestMethod.GET) 
    public String home(Locale locale, Model model) { 
     logger.info("Consume a RESTful webservice.", locale); 
     RestTemplate restTemplate = new RestTemplate(); 
     Page page = restTemplate.getForObject("http://graph.facebook.com/juventus", Page.class); 

     model.addAttribute("pageAbout", page.getAbout()); 
     model.addAttribute("pageAwards", page.getAwards()); 

     return "consumews"; 
    } 

} 

그리고 Page 클래스 :

@JsonIgnoreProperties(ignoreUnknown = true) 
public class Page { 

    private String about; 
    private String awards; 

    public String getAbout() { 
     return about; 
    } 

    public void setAbout(String about) { 
     this.about = about; 
    } 

    public String getAwards() { 
     return awards; 
    } 

    public void setAwards(String awards) { 
     this.awards = awards; 
    } 

} 

그러나 콘솔 반환이 오류 나는 페이스 북 그래프 (FC Juventus's JSON data-stream)

를 사용하여 가져 JSON 스트림을 고려하고 이 내 컨트롤러 :

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.web.client.RestClientException: Could not extract response: no suitable HttpMessageConverter found for response type [my.proj.Page] and content type [application/json;charset=UTF-8] 
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:894) 
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:734) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:847) 

이 오류를 어떻게 해결할 수 있습니까?

답변

0

classpath에 올바른 Jackson 패키지를 추가했는지 확인하십시오.

<dependency> 
    <groupId>com.fasterxml.jackson.jaxrs</groupId> 
    <artifactId>jackson-jaxrs-json-provider</artifactId> 
    <version>2.3.1</version> 
</dependency> 

를 아니면 이전 Jackson 추가 사용하는 경우 : 및 Jackson 2 위해 당신은 메이븐을 사용

<dependency> 
    <groupId>org.codehaus.jackson</groupId> 
    <artifactId>jackson-jaxrs</artifactId> 
    <version>1.9.13</version> 
</dependency> 
+0

com.fasterxml.jackson.core.jackson-databind 2.3.0을 사용하고 있습니다. jackson-jaxrs-json-provider를 추가하면 Eclipse에서 Maven 오류가 반환됩니다. – vdenotaris

0

을 당신은 JSON 내용에 대한 기본 메시지 컨버터로 잭슨을 정의 할 필요가있다. 이것은 내가 무엇을 (내가 GSON 그래서이 잭슨의 메시지 컨버터 정확한 구문되지 않을 수도 있습니다 사용) : 당신이 Spring 관리 빈로 RestTemplate를 정의하지 않는 때문에

<bean id="restTemplate" class="org.springframework.web.client.RestTemplate"> 
     <property name="messageConverters"> 
      <list> 
       <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" /> 
      </list> 
     </property> 
    </bean> 

, 당신은 필요 수동으로 수행하십시오 :

restTemplate.getMessageConverters().add(new MappingJacksonHttpMessageConverter()); 

PS. 새로운 매킨토시 종속성을 사용하고있는 것을 보았습니다. 적절한 매퍼가 다를 수 있습니다.

관련 문제