servicio mkyong headers getforobject example consumir java spring resttemplate

java - mkyong - ¿Cómo leo el encabezado de respuesta de RestTemplate?



resttemplate timeout (4)

Lo mejor sería usar el método de execute y pasar un ResponseExtractor que tendrá acceso a los encabezados.

private static class StringFromHeadersExtractor implements ResponseExtractor<String> { public String extractData(ClientHttpResponse response) throws { return doSomthingWithHeader(response.getHeaders()); } }

Otra opción (menos limpia) es extender RestTemplate y anular la llamada a doExecute y agregar allí cualquier lógica especial de manejo de encabezado.

Estoy publicando información en un servicio web utilizando RestTemplate.postForObject. Además de la cadena de resultados, necesito la información en el encabezado de respuesta. ¿Hay alguna manera de conseguir esto?

RestTemplate template = new RestTemplate(); String result = template.postForObject(url, request, String.class);


No sé si este es el método recomendado, pero parece que podría extraer información de los encabezados de respuesta si configura la plantilla para usar un HttpMessageConverter personalizado.


Ok, finalmente lo descubrí. El método de intercambio es exactamente lo que necesito. Devuelve una HttpEntity que contiene los encabezados completos.

RestTemplate template = new RestTemplate(); HttpEntity<String> response = template.exchange(url, HttpMethod.POST, request, String.class); String resultString = response.getBody(); HttpHeaders headers = response.getHeaders();


HttpEntity<?> entity = new HttpEntity<>( postObject, headers ); // for request HttpEntity<String> response = template.exchange(url, HttpMethod.POST, entity, String.class); String result= response.getBody(); HttpHeaders headers = response.getHeaders();