Изменить / Заменить тело ClientHttpResponse внутри перехватчика (ClientHttpRequestInterceptor) - PullRequest
1 голос
/ 07 января 2020

Я добавляю шифрование на уровне сообщений (MLE) к существующей базе кода для исходящих запросов. Для этого я просто написал перехватчик, который будет перехватывать исходящие запросы, шифровать их тела, а затем отправлять запрос. Ответ, который мы получаем, также зашифрован и должен быть расшифрован. Это все работает нормально для меня. Единственная проблема, с которой я столкнулся, заключается в том, что я должен заменить зашифрованное тело ClientHttpResponse на расшифрованное JSON. Как я могу это сделать? Я не вижу никаких методов, которые позволили бы мне изменить тело ответа. Заранее спасибо.

@Override
public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution)
        throws IOException {
    ClientHttpResponse response;
    String bodyStr = new String(body);

    // Encrypt the body and send
    bodyStr = encrypt(bodyStr);
    try {
        response = execution.execute(request, bodyStr.getBytes());
    } catch (Exception e) {
        throw e;
    }

    // Decrypt the response body
    String decryptedResponseBody = decrypt(response.getBody());

    // Set the response body to the decrypted data (JSON)
    // response.setBody(decryptedResponseBody)?????????

    return response;
}
...