java - getforobject - Spring RestTemplate a la solicitud POST con encabezados personalizados y un objeto de solicitud
resttemplate postforentity (3)
Intenta habilitar la depuración completa del paquete Spring. Estoy seguro de que obtendrás más información sobre tu "400 Solicitud incorrecta":
<logger name="org.springframework"> <level value="DEBUG"/> </logger>
Intente enviar la misma solicitud con cualquier herramienta de descanso (por ejemplo, el complemento Chrome de Rest Console).
Vea lo que sucede en la consola de depuración del navegador (pestaña "Red" para Chrome, como ejemplo).
Esos pasos siempre me ayudan.
En Spring RestTemplate hay una forma de enviar encabezados personalizados junto con un objeto de solicitud POST. Ya he probado el método de exchange
que está disponible. Parece que podemos enviar pares de valores clave junto con encabezados personalizados pero no un objeto de solicitud adjunto a HttpEntity.
El siguiente código ilustra el intento y parece ser 400 BadRequest
para el servidor.
HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<?> httpEntity = new HttpEntity<Object>(requestDTO, requestHeaders);
RestTemplate restTemplate = new RestTemplate();
restTemplate.exchange(URL, HttpMethod.POST, httpEntity, SomeObject.class);
Alguien consciente de esta situación? ¿O es algo que no es posible que esté tratando de hacer?
Sí, es posible, si usa encabezados MultiValueMap en lugar de HttpHeaders
Ejemplo:
MultiValueMap<String, String> headers = new LinkedMultiValueMap<String, String>();
headers.add("Authorization", "Basic " + base64Creds);
headers.add("Content-Type", "application/json");
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
HttpEntity<ObjectToPass> request = new HttpEntity<ObjectToPass>(objectToPassInstance, headers);
restTemplate.postForObject(urlPost, request, Boolean.class);
Boolean.class simplemente porque mi controlador devuelve booleano en este punto final (podría ser cualquier cosa)
¡Buena suerte con la codificación!