RestTemplate response.getBody arroja una excepción en los errores 4 ** y 5 ** para la solicitud de colocación y publicación, pero funciona bien para obtener solicitudes
Estoy tratando de interceptar y registrar todas las respuestas de solicitud. Para hacer solicitudes estoy usandoRestTemplate.exchange()
.
Cuando hago unGET
solicitar y obtener un4**
error puedo llamar alClientHttpResponse.getBody(
) y puede acceder al cuerpo de respuesta pero paraPUT
yPOST
peticionesClientHttpResponse.getBody()
El método arroja una excepción.
¿Qué podría estar causando esto y cómo puedo obtener el cuerpo de respuesta paraPOST
yPUT
solicitudes también?
Aquí es donde hago la solicitud:
apiResponse = restTemplate.exchange(url, vCloudRequest.getHttpMethod(), entity, responseType);
Esta es la parte del interceptor que recibe la excepción:
@Override
public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution) throws IOException {
ClientHttpResponse response = execution.execute(request, body);
String requestString = new String(body);
String responseString = new
// Below line throws exception
String(ByteStreams.toByteArray(response.getBody()), Charset.forName("UTF-8"));
Esta es la pila.
Caused by: java.io.IOException: Server returned HTTP response code: 403 for URL: https://176.235.57.11/api/admin/org/bd154aaf-2e7c-446d-91be-f0a45138476b/users
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1876)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1474)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)
at org.springframework.http.client.SimpleClientHttpResponse.getBody(SimpleClientHttpResponse.java:85)
at org.springframework.http.client.BufferingClientHttpResponseWrapper.getBody(BufferingClientHttpResponseWrapper.java:69)
at roma.api_utils.model.Interceptors.RequestLoggingInterceptor.intercept(RequestLoggingInterceptor.java:39)
at org.springframework.http.client.InterceptingClientHttpRequest$InterceptingRequestExecution.execute(InterceptingClientHttpRequest.java:86)
at org.springframework.http.client.InterceptingClientHttpRequest.executeInternal(InterceptingClientHttpRequest.java:70)
at org.springframework.http.client.AbstractBufferingClientHttpRequest.executeInternal(AbstractBufferingClientHttpRequest.java:48)
at org.springframework.http.client.AbstractClientHttpRequest.execute(AbstractClientHttpRequest.java:53)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:652)
Actualización:
Cuando llamoresponse.getStatusCode()
antes de llamarresponse.getBody()
no tiraIOException
.