シンプルな Spring Interceptor クラスを使用して、Android アプリの RestTemplate オブジェクトに対するすべての REST 要求/応答をログに記録しています。これまでのところ、すべて正常に動作しています。
public class LoggerInterceptor implements ClientHttpRequestInterceptor {
@Override
public ClientHttpResponse intercept(HttpRequest request, byte[] body,
ClientHttpRequestExecution execution) throws IOException {
Log.d(TAG, "Request body: " + new String(body));
// ...more log statements...
ClientHttpResponse response = execution.execute(request, body);
Log.d(TAG, "Response Headers: " + response.getHeaders());
return response;
}
初期化時に私は呼び出します:
List<ClientHttpRequestInterceptor> interceptors = new ArrayList<ClientHttpRequestInterceptor>();
LoggerInterceptor loggerInterceptor = new LoggerInterceptor();
interceptors.add(loggerInterceptor);
restTemplate.setInterceptors(interceptors);
response.getBody()
ただし、InputStream が一度消費され、後で再度消費されると IllegalStateException がスローされるため、上記のメソッドにログインできません。応答本文もログに記録できるように、これを回避する方法はありますか?