Spring OAuth2 Rest исключение глотает код HttpResponse - PullRequest
0 голосов
/ 08 июня 2018

Restservice Я вызываю с помощью oauth2resttemplate возвращает ответ с кодом состояния 403. Я вижу, что в моем журнале ClientHttpRequestInterceptor строки введены в resttemplate.

Это перехватчик для перехвата запроса и ответа.traceResponse () записывает код состояния ответа как 403. Я ожидал.

public class RequestInterceptor implements ClientHttpRequestInterceptor {
    @Override
    public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution) throws IOException {
        try
        {
            traceRequest(request, body);
        } catch (Exception e)
        {
            ManagerLog.alertLog("Exception occurred", e);
        }
        ClientHttpResponse response = execution.execute(request, body);
        traceResponse(response);
        return response;
    }

    private void traceRequest(HttpRequest request, byte[] body) throws Exception {
        ManagerLog.infoLog("===========================request begin================================================");
        ManagerLog.infoLog("URI          : "+request.getURI());
        ManagerLog.infoLog("Method       : "+request.getMethod());
        ManagerLog.infoLog("Headers      : "+request.getHeaders() );
        ManagerLog.infoLog("Request body : "+new String(body, "UTF-8"));
        ManagerLog.infoLog("==========================request end================================================");
    }

    private void traceResponse(ClientHttpResponse response) throws IOException {
        ManagerLog.infoLog("============================response begin==========================================");
        ManagerLog.infoLog("Response Status code  : "+ response.getStatusCode());
        ManagerLog.infoLog("Response Status text  : "+ response.getStatusText());
        ManagerLog.infoLog("Response Headers      : "+ response.getHeaders());
        // ManagerLog.infoLog("Response body         : "+ StreamUtils.copyToString(response.getBody(), Charset.defaultCharset()));
        ManagerLog.infoLog("=======================response end=================================================");

    }
}

Но здесь я вижу 400 вместо 403. Но я вижу, что в исходном коде пружины он фактически жестко закодирован до 400 в родительском классе (OAuth2Exception.java) из InvalidGrantException.

try{
objectResponseEntity = oauth2RestTemplate.exchange(url, httpMethod, httpEntity, pojo) -- throws an InvalidGrantException
} catch (HttpStatusCodeException e)
{
...
} catch(InvalidGrantException e)
{
  errorCode = e.getHttpErrorCode(); -- was expecting 403 but returning 400
...
}

Есть идеи о том, как получить действительный код ответа http из исключения?

...