2012-10-04 11 views
10

Meine Post-Methode wird aufgerufen, aber mein Profil ist leer. Was ist falsch an diesem Ansatz? Muss ich @Requestbody verwenden, um RestTemplate zu verwenden?RestTemplate Post für Entität

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

Ist Ihr Controller mit dem 'user' Teil des Pfades in' @ RequestMapping' versehen? Weil Ihr metohd annotiert Punkte auf '/', die nicht auf '/ user /' ohne die zusätzliche Controller-Anmerkung reagieren wird. –

+0

@ nicholas.hauschild Ja. Ich betrete die Controller-Methode. Das Problem ist, dass das Profil in der tatsächlichen Methode null ist. – pethel

Antwort

10

Sie haben das Profilobjekt bauen auf diese Weise

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 für mich guten Ausgangspunkt war aber in meinem Fall ist es noch leer Objekt @RestController meine Lösung für Unternehmen Erstellung und Buchung beendet ausgehängt sieht so aus:

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