Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save YugandharVadlamudi/9dce7c221471f983d0a55b29a98bbf20 to your computer and use it in GitHub Desktop.
Save YugandharVadlamudi/9dce7c221471f983d0a55b29a98bbf20 to your computer and use it in GitHub Desktop.
retrofit2 interceptor that logs the raw JSON response from API. After that it clones it and returns a sane copy that other classes can consume.
import android.util.Log;
import com.appandweb.prjtestdrivendev.BuildConfig;
import com.squareup.okhttp.Interceptor;
import com.squareup.okhttp.Request;
import com.squareup.okhttp.Response;
import com.squareup.okhttp.ResponseBody;
import java.io.IOException;
public class LogJsonInterceptor implements Interceptor {
@Override
public Response intercept(Interceptor.Chain chain) throws IOException {
Request request = chain.request();
Response response = chain.proceed(request);
String rawJson = response.body().string();
Log.d(BuildConfig.APPLICATION_ID, String.format("raw JSON response is: %s", rawJson));
// Re-create the response before returning it because body can be read only once
return response.newBuilder()
.body(ResponseBody.create(response.body().contentType(), rawJson)).build();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment