2014-01-22 1 views
0

봄 4 Restfull 서비스는 내가 대신 문자열의 매개 변수로 콩을 보낼 수있는 간단한 서버/클라이언트 응용 프로그램을 만들려고하지만 아래에 실패하고 빈

서버 내 코드입니다

@Controller 
public class GreetingController { 

private static final String template = "Hello, %s!"; 
private final AtomicLong counter = new AtomicLong(); 

@RequestMapping(method=RequestMethod.POST,value="/returnGreet") 
public @ResponseBody Greeting returnGreet(
     @RequestBody(required=false) Greeting greet) { 
    if(greet == null) 
      return new Greeting(counter.incrementAndGet(), 
        String.format(template, greet)); 
    else 
     return new Greeting(0,"Testing"); 
} 
} 

클라이언트

RestTemplate restTemplate = new RestTemplate(); 

    MultiValueMap<String,Greeting> greet = new LinkedMultiValueMap<String, Greeting>(); 
    greet.add("greet", new Greeting(0,"XOXO")); 



    greeting = restTemplate.postForObject("http://localhost:8080/returnGreet",greet, Greeting.class,greet); 
    System.out.println("Content: " + greeting.getContent()); 
    System.out.println("Id: " + greeting.getId()); 

결과는 서버 측 인사 개체에 대해 항상 null입니다.

아이디어가 있으십니까?

답변

0

RestTemplate을 올바르게 사용하고 있지 않습니다. 전송하려는 엔터티로 MultiValueMap을 전달하는 이유는 무엇입니까? 이것은 서버가 기대하는 방식으로 직렬화되지 않습니다.

Greeting 개체를 직접 사용하십시오.

restTemplate.postForObject("http://localhost:8080/returnGreet", new Greeting(0, "XOXO"), Greeting.class); 

또한 마지막 인수는 필요하지 않으며 URI 변수가 없습니다.

+0

나는 이미 끝났지 만 오류가 발생합니다. org.springframework.web.client.HttpClientErrorException : 400 잘못된 요청, 더 자세히 추적하지 않습니다. – Shahbour

+0

@Shahbour 서버의 로거 레벨을 DEBUG로 설정하고 Spring이 본문을 역 직렬화하지 못한 곳을 확인하십시오. –

+0

안녕하세요, 그것은 누락되었습니다 지금도 클래스 Greeting은 빈 생성자가 필요하지 않았다는 것이 필요합니다, 나는 로그를 TRACE로 변경 한 후에 그것을 발견했습니다. . 그레이트 – Shahbour

관련 문제