No encontré ningún ejemplo de cómo resolver mi problema, por lo que quiero pedirle ayuda. No puedo simplemente enviar una solicitud POST usando el objeto RestTemplate en JSON
Cada vez que obtengo:
org.springframework.web.client.HttpClientErrorException: 415 Tipo de medio no admitido
Yo uso RestTemplate de esta manera:
...
restTemplate = new RestTemplate();
List<HttpMessageConverter<?>> list = new ArrayList<HttpMessageConverter<?>>();
list.add(new MappingJacksonHttpMessageConverter());
restTemplate.setMessageConverters(list);
...
Payment payment= new Payment("Aa4bhs");
Payment res = restTemplate.postForObject("http://localhost:8080/aurest/rest/payment", payment, Payment.class);
¿Qué es mi culpa?
Respuestas:
Esta técnica me funcionó:
espero que esto ayude
fuente
.put()
esvoid
!postForEntity(url, entity, String.class)
obras en lugar deput(url, entity)
Me encontré con este problema al intentar depurar un punto final REST. Aquí hay un ejemplo básico usando la clase RestTemplate de Spring para hacer una solicitud POST que usé. Me tomó bastante tiempo reunir el código de diferentes lugares para obtener una versión que funcione.
El analizador JSON particular de mi punto final de descanso estaba usando comillas dobles necesarias alrededor de los nombres de campo, por eso escapé de las comillas dobles en mi cadena de solicitud Json.
fuente
He estado usando la plantilla de descanso con JSONObjects de la siguiente manera:
fuente
Como se especifica aquí , supongo que debe agregar un
messageConverter
paraMappingJacksonHttpMessageConverter
fuente
Si está utilizando Spring 3.0, una manera fácil de evitar la excepción org.springframework.web.client.HttpClientErrorException: 415 Tipo de medio no admitido es incluir los archivos jackson jar en su classpath y usar el
mvc:annotation-driven
elemento config. Como se especifica aquí .Me estaba arrancando el pelo tratando de entender por qué la aplicación mvc-ajax funcionaba sin ninguna configuración especial para el
MappingJacksonHttpMessageConverter
. Si lees el artículo que vinculé arriba de cerca:fuente
El error "415 Tipo de medio no admitido" le indica que el servidor no aceptará su solicitud POST. Su solicitud está absolutamente bien, es el servidor que está mal configurado.
MappingJacksonHttpMessageConverter
configurará automáticamente el encabezado de tipo de contenido de solicitud enapplication/json
, y supongo que su servidor lo está rechazando. Sin embargo, no nos ha dicho nada sobre la configuración de su servidor, por lo que realmente no puedo aconsejarle sobre eso.fuente
Lo estoy haciendo de esta manera y funciona.
// Pase los encabezados aquí
Espero que esto ayude
fuente
Estaba teniendo este problema y estoy usando Spring's RestTemplate en el cliente y Spring Web en el servidor. Ambas API tienen informes de errores muy pobres, por lo que son extremadamente difíciles de desarrollar.
Después de muchas horas de probar todo tipo de experimentos, descubrí que el problema estaba siendo causado al pasar una referencia nula para el cuerpo POST en lugar de la Lista esperada. Supongo que RestTemplate no puede determinar el tipo de contenido de un objeto nulo, pero no se queja de ello. Después de agregar los encabezados correctos, comencé a obtener una excepción del lado del servidor diferente en Spring antes de ingresar a mi método de servicio.
La solución fue pasar una lista vacía del cliente en lugar de nula. No se requieren encabezados ya que el tipo de contenido predeterminado se usa para objetos no nulos.
fuente
Este código me está funcionando;
fuente
Si no quieres procesar la respuesta
Si necesita respuesta para procesar
fuente
Para mí, se produjo un error con esta configuración:
AndroidAnnotations
Spring Android RestTemplate Module
y ...GsonHttpMessageConverter
Las anotaciones de Android tienen algunos problemas con esto convertido para generar
POST
solicitud sin parámetro. Simplemente el parámetro lonew Object()
resolvió para mí.fuente
¿Por qué trabajar más duro de lo necesario?
postForEntity
acepta unMap
objeto simple como entrada. Lo siguiente funciona bien para mí al escribir pruebas para un punto final REST dado en Spring. Creo que es la forma más simple posible de hacer una solicitud JSON POST en Spring:fuente
Si no desea asignar el JSON usted mismo, puede hacerlo de la siguiente manera:
fuente
Intenté lo siguiente en el arranque de primavera:
fuente