2010-10-14 13 views
6

Tengo un servicio RESTEasy que devuelve un HTTP 500 cuando se produce un error en el servidor. Logré adjuntar un cuerpo a la respuesta HTTP para dar más detalles sobre el error. Así que la respuesta que sale del servicio se ve algo como estoHTTP 500 Response with Body?

HTTP/1.1 500 Internal Server Error 
Server: Apache-Coyote/1.1 
Content-Type: application/xml;charset=ISO-8859-1 
Content-Language: en-US 
Content-Length: 3251 
Date: Thu, 14 Oct 2010 23:22:49 GMT 
Connection: close 

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><myErrorEnvelope><internalCode>123</internalCode><description>error details</description></myErrorEnvelope> 

Tengo un cliente (Spring MVC cliente 3.0 REST) ​​y estoy tratando de capturar el HTTP 500 y leer el cuerpo de la respuesta y deserializar el myErrorEnvelope objeto. Primero capturo un catch RestClientException y me dice correctamente que hubo una respuesta HTTP 500 pero luego parece que no hay forma de obtener el cuerpo de la respuesta. ¿Es esto algo que se supone que no debería poder hacer? ¿Se supone que debo devolver el objeto de error como el cuerpo de una respuesta HTTP 200? Realmente preferiría devolver HTTP 500 con un cuerpo.

Gracias.

Respuesta

7

Estás intentando hacer lo correcto. Un marco que no le permite obtener la carga útil de una respuesta que no sea 2xx simplemente está roto.

Cuestiones relacionadas