我正在使用一個簡單的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);
但是我不能在上面,因爲InputStream獲取使用一次,並拋出當以後再消耗一個IllegalStateException的方法登錄response.getBody()
。有沒有辦法解決這個問題,以便我可以記錄響應主體呢?
使用3.1 Spring框架或更高版本,這絕對是一個更優雅的解決方案。 – Nachi