I am trying to enable Logging with Retrofit but I am getting this exception:
07-13 12:44:53.278 28698-29248/com.xxxx.debug E/AndroidRuntime: FATAL EXCEPTION: OkHttp Dispatcher
Process: com.xxxx.debug, PID: 28698
java.lang.NoSuchMethodError: No virtual method log(Ljava/lang/String;)V in class Lokhttp3/internal/Platform; or its super classes (declaration of 'okhttp3.internal.Platform' appears in /data/data/com.xxxx.debug/files/instant-run/dex/slice-realm-optional-api_16b022358933b490d810e358ea76b13cd4d88163-classes.dex)
at okhttp3.logging.HttpLoggingInterceptor$Logger$1.log(HttpLoggingInterceptor.java:109)
at okhttp3.logging.HttpLoggingInterceptor.intercept(HttpLoggingInterceptor.java:157)
at okhttp3.RealCall$ApplicationInterceptorChain.proceed(RealCall.java:190)
at com.xxxx.api.RetrofitClient$1.intercept(RetrofitClient.java:59)
at okhttp3.RealCall$ApplicationInterceptorChain.proceed(RealCall.java:190)
at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:163)
at okhttp3.RealCall.access$100(RealCall.java:30)
at okhttp3.RealCall$AsyncCall.execute(RealCall.java:127)
at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
And this is how I am doing it:
public class RetrofitClient {
private static MyService instance;
public static MyService getInstance(Context context) {
if (instance == null) {
instance = newInstance(context);
}
return instance;
}
private static MyService newInstance(Context context) {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(context.getString(R.string.base_url))
.addConverterFactory(GsonConverterFactory.create())
.client(getClient())
.build();
return retrofit.create(MyService.class);
}
@NonNull
private static OkHttpClient getClient() {
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor()
.setLevel(HttpLoggingInterceptor.Level.BODY);
OkHttpClient.Builder httpClient = new OkHttpClient.Builder()
.addInterceptor(new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Request original = chain.request();
Request request = original.newBuilder()
.header("api-key", "...")
.header("version-app", "-")
.header("platform", "android")
.header("version", "-")
.header("device", "-")
.method(original.method(), original.body())
.build();
Response response = chain.proceed(request);// <-- CRASH
return response;
}
})
.addInterceptor(interceptor);
return httpClient.build();
}
}
I have tried adding only one interceptor but still crashing. I am using this dependencies:
compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.squareup.retrofit2:converter-gson:2.1.0'
compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'
What am I doing wrong here?
EDIT: Well this is embarrassing... the problem solved itself. I changed nothing, I am revising all my commits and both RetrofitClient
and build.gradle
haven't changed. The problem, therefore, was not related to gradle dependencies or versions.
Luckily someone will cast some light on this exception!