Intento usar el servicio web Spring Restful.
He creado dos proyectos en dos eclipse. En un proyecto, escribí el programa RestClient y en otro proyecto, escribí el servicio web y miré el servicio web sobre Tomcat. Estoy tratando de pasar java bean como comunicación json entre el cliente y el servidor.
Pero tengo por debajo de la excepción.
org.springframework.web.client.HttpClientErrorException: 415 Unsupported Media TypeLo he intentado de muchas formas pero no ha tenido éxito. A continuación se muestra mi fragmento de código.
Método del cliente:
private static void postTrack() { try { final String uri = "http://localhost:8181/RestWS/test"; Track track = new Track(); track.setTitle("Singer"); track.setSinger("Shas"); RestTemplate restTemplate = new RestTemplate(); Track responseTrack = restTemplate.postForObject(uri, track, Track.class); } catch (Exception e) { e.printStackTrace(); } }Método de servicio:
@RequestMapping(value = "/test", method = RequestMethod.POST, headers = "Accept=application/json") public @ResponseBody Track testMethod(@RequestBody Track track) { System.out.println(" Inside Test Method : "); System.out.println(" In GreetingController.greeting() "+track.getSinger()); return track; }Clase de pista:
public class Track { String title; String singer; public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getSinger() { return singer; } public void setSinger(String singer) { this.singer = singer; } @Override public String toString() { return "Track [title=" + title + ", singer=" + singer + "]"; } }También probé con
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter()); restTemplate.getMessageConverters().add(new StringHttpMessageConverter());Y
MultiValueMap<String, String> header = new LinkedMultiValueMap<String, String>(); header.add("Content-Type", "application/json"); HttpEntity<Object> httpEntity = new HttpEntity<Object>(track, header); ResponseEntity<Track> response = restTemplate.exchange(uri, HttpMethod.POST, httpEntity, Track.class);Finalmente, está funcionando con los cambios realizados de la siguiente manera:
Se agregaron las siguientes líneas en servlet xml.
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <list> <ref bean="jsonConverter" /> </list> </property> </bean> <bean id="jsonConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> <property name="supportedMediaTypes" value="application/json" /> </bean>Agregue los frascos jackson-core-2.5.0 y jackson-annotations-2.5.0 agregados en classpath.