2012-10-04 21 views
10

Phương thức đăng bài của tôi được gọi nhưng Hồ sơ của tôi trống. Có gì sai với cách tiếp cận này? Tôi có phải sử dụng @Requestbody để sử dụng RestTemplate không?RestTemplate post cho thực thể

Profile profile = new Profile(); 
profile.setEmail(email);   
String response = restTemplate.postForObject("http://localhost:8080/user/", profile, String.class); 


@RequestMapping(value = "/", method = RequestMethod.POST) 
    public @ResponseBody 
    Object postUser(@Valid Profile profile, BindingResult bindingResult, HttpServletResponse response) { 

    //Profile is null 
     return profile; 
    } 
+0

Bộ điều khiển của bạn có chú thích bao gồm phần 'người dùng' của đường dẫn trong' @ RequestMapping' không? Bởi vì metohd của bạn đã chú thích các điểm tới '/', nó sẽ không trả lời '/ user /' nếu không có chú giải điều khiển bổ sung. –

+0

@ nicholas.hauschild Có. Tôi đang nhập phương thức điều khiển. Vấn đề là hồ sơ là null trong phương pháp thực tế. – pethel

Trả lời

10

Bạn phải xây dựng các đối tượng hồ sơ theo cách này

MultiValueMap<String, Object> parts = new LinkedMultiValueMap<String, Object>(); 
parts.add("email", email); 

Object response = restTemplate.postForObject("http://localhost:8080/user/", parts, String.class); 
2

MultiValueMap là điểm khởi đầu tốt cho tôi nhưng trong trường hợp của tôi nó vẫn gửi đối tượng trống để @RestController giải pháp của tôi để tạo thực thể và niêm yết đã kết thúc trông giống như vậy:

HashedMap requestBody = new HashedMap(); 
requestBody.put("eventType", "testDeliveryEvent"); 
requestBody.put("sendType", "SINGLE"); 

HttpHeaders headers = new HttpHeaders(); 
headers.setContentType(MediaType.APPLICATION_JSON); 

// Jackson ObjectMapper to convert requestBody to JSON 
String json = new ObjectMapper().writeValueAsString(request); 
HttpEntity<String> entity = new HttpEntity<>(json, headers); 

restTemplate.postForEntity("/generate", entity, String.class); 
Các vấn đề liên quan