2012-08-30 14 views
7

Tengo una URL de reposo y envié lo mismo que una solicitud POST con cuerpo (nombre de usuario, contraseña, otros parámetros) a través de Rest Client (restclient-ui-2.4-jar-with-dependencies) y funcionó bien sin ningún problema .¿Necesita ayuda con RestTemplate Post Request with Body Parameters?

Ex:

URL: https://test.com/cgi-bin/testing/api cuerpo: nombre de usuario = testuser & password = pass123 & id = 13002 & name = Raju

La misma no está funcionando bien cuando yo solía primavera RestTemplate postForObject (url, varmap, Employee.class) método.

¿Alguien me puede ayudar con un ejemplo simple donde la solicitud es una URL, con los parámetros del cuerpo y la respuesta es XML que se asigna con una clase?

Código de ejemplo:

MultiValueMap<String, String> map = new LinkedMultiValueMap<String, String>(); 
    map.add("username", "test"); 
    map.add("password", "test123"); 
    map.add("id", "1234"); 
    MarshallingHttpMessageConverter mc = new MarshallingHttpMessageConverter(); 
    mc.setMarshaller(new Jaxb2Marshaller()); 
    mc.setUnmarshaller(new Jaxb2Marshaller()); 
    list.add(marshallingHttpMessageConverter); 
    emediateRestTemplate.setMessageConverters(list); 
    Employee employee = (Employee) restTemplate.postForObject(url, map, Employee.class); 

Gracias de antemano, Kathir

+0

¿Puede mostrar el código que no está funcionando? –

+0

restTemplate.postForObject (url, parametersMap, Employee.class); . ¿Podría también informarme sobre las diferencias entre postForObject y postForExchange? – Kathir

+0

Debe actualizar la pregunta con el código, no agregarlo en los comentarios. Además, muestre más de una línea de código, muestre la configuración relevante también. Finalmente, hay una gran cantidad de documentación en el sitio de Spring sobre lo que hace cada método. Quizás quieras echarle un vistazo a eso primero. –

Respuesta

13

Los convertidores anteriores Ex: "MarshallingHttpMessageConverter" no son requeridos.

MultiValueMap<String, String> parametersMap = new LinkedMultiValueMap<String, String>(); 
parametersMap.add("username", "test"); 
parametersMap.add("password", "test123"); 
parametersMap.add("id", "1234"); 

Para la publicación:

restTemplate.postForObject(url, parametersMap, Employee.class); 

URL es: String - URL REST API parametersMap - MultiValueMap Empleado - objeto que necesita ser convertido de la respuesta JSON

Para Obtener:

restTemplate.getForObject(url, class object, variablesMap); 

url es: String - rest ap i URL variablesMapa - Mapa objeto de clase - objeto que debe convertirse de la respuesta JSON

+0

¿Cómo obtener la respuesta de la solicitud? – gstackoverflow