2012-10-04 20 views
10

Moja metoda jest wywoływana, ale mój profil jest pusty. Co jest nie tak z tym podejściem? Czy muszę używać @Requestbody do korzystania z RestTemplate?Stanowisko RestTemplate dla podmiotu

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

Czy Twój kontroler ma przypisaną część "użytkownika" ścieżki w '@ RequestMapping'? Ponieważ twój metohd został opatrzony przypisami do '/', który nie zareaguje na '/ user/'bez dodatkowej adnotacji kontrolera. –

+0

@ nicholas.hauschild Tak. Wchodzę do metody kontrolera. Problem polega na tym, że Profil ma zerową wartość w aktualnej metodzie. – pethel

Odpowiedz

10

Trzeba zbudować obiekt o profilu tędy

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 był dobry punkt wyjścia dla mnie, ale w moim przypadku to jeszcze pisał pusty obiekt do @RestController moje rozwiązanie do tworzenia jednostki i delegowania zakończył się wygląda tak:

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);