我正在使用一个简单的 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 。有没有办法解决这个问题,以便我也可以记录响应正文?