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.

Respuestas a la pregunta(4)

Su respuesta a la pregunta