Sto utilizzando una semplice classe Spring Interceptor per registrare tutte le richieste/risposte REST per l'oggetto RestTemplate nella mia app Android. Finora tutto funziona bene.Leggere il corpo della risposta in un interceptor Spring Intel
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;
}
A inizializzazione mi chiamano:
List<ClientHttpRequestInterceptor> interceptors = new ArrayList<ClientHttpRequestInterceptor>();
LoggerInterceptor loggerInterceptor = new LoggerInterceptor();
interceptors.add(loggerInterceptor);
restTemplate.setInterceptors(interceptors);
Tuttavia non posso accedere response.getBody()
nel metodo di cui sopra, perché l'InputStream si consuma una volta e lancia un IllegalStateException quando viene consumato più tardi. C'è un modo per aggirare questo modo che io possa registrare anche il corpo della risposta?
Utilizzando la struttura 3.1 Spring o successiva, questa è sicuramente una soluzione più elegante. – Nachi