2012-10-04 13 views
10

Se llama a mi método de publicación pero mi perfil está vacío. ¿Qué está mal con este enfoque? ¿Debo usar @Requestbody para usar RestTemplate?Publicación de RestTemplate para la entidad

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

¿Está su controlador anotado para incluir la porción 'user' de la ruta en' @ RequestMapping'? Debido a que su metohd anotado apunta a '/', que no responderá a '/ user /' sin la anotación adicional del controlador. –

+0

@ nicholas.hauschild Sí. Estoy ingresando el método del controlador. El problema es que el perfil es nulo en el método real. – pethel

Respuesta

10

Usted tiene que construir el objeto de perfil de esta manera

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 era buen punto de partida para mí, pero en mi caso todavía publicada objeto vacío a @RestController mi solución para la creación de la entidad y la publicación terminó pareciendo así:

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