Ich verwende eine einfache Spring Interceptor-Klasse, um alle REST-Anforderungen / Antworten für das RestTemplate-Objekt in meiner Android-App zu protokollieren. Bis jetzt funktioniert alles gut.
%Vor%Bei der Initialisierung rufe ich:
%Vor% Allerdings kann ich in der obigen Methode response.getBody()
nicht protokollieren, da der InputStream einmal verbraucht wird und eine IllegalStateException auslöst, wenn er später wieder verbraucht wird. Gibt es einen Weg, um den Antwortkörper zu protokollieren?
Implementieren Sie ClientHttpResponse
selbst und fügen Sie eine setBody(byte[] body)
-Methode hinzu und überschreiben Sie getBody
. In Ihrem obigen Code können Sie dann das Byte-Array in ByteArrayInputStream
speichern, die gewünschten Daten protokollieren und dann das Byte-Array in der Instanz Ihrer Klasse zurücksetzen, die ClientHttpResponse
implementiert, und die Sie dann zurückgeben können.
Tags und Links java android spring interceptor inputstream