アプリケーションでロギング目的でREST要求と応答のボディを取得したいと思います。Spring ClientHttpRequestInterceptorリクエスト/レスポンスが空です
現在、私はClientHttpRequestInterceptorを実装しているloggingRequestInterceptorクラスを持っています。これはsofiene hereの答えとよく似ています。
私はこのインターセプタを私のスプリングテンプレート内のレストテンプレート内のプロパティとして追加しました。私の残りのすべては、私が法とURIが、身体およびログ呼び出すには、
<property name="interceptors">
<list>
<bean class="com.company.projectName.service.api.rest.io.impl.LoggingRequestInterceptor" />
</list>
</property>
しかし:私のRestTemplateに
public class LoggingRequestInterceptor implements ClientHttpRequestInterceptor {
private static final Logger logger = LoggerFactory.getLogger(LoggingRequestInterceptor.class);
@Override
public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution) throws IOException {
ClientHttpResponse response = execution.execute(request, body);
response = log(request, body, response);
return response;
}
private ClientHttpResponse log(final HttpRequest request, final byte[] body, final ClientHttpResponse response) throws IOException {
final ClientHttpResponse responseCopy = new BufferingClientHttpResponseWrapper(response);
StringBuilder builder = new StringBuilder();
builder.append("Method: ").append(request.getMethod().toString());
builder.append("URI: ").append(request.getURI().toString());
builder.append("Request Body: ").append(new String(body,"UTF-8"));
builder.append("Response body: ").append(convertStreamToString(responseCopy.getBody()));
logger.info(builder.toString());
return responseCopy;
}
}
春のプロパティ:
私のコードを以下に示します。レスポンスボディは空です。アプリケーションがこの情報を記録できるようにするために、要求と応答から本文を取得する適切な方法は何ですか。