Retrofit Logging Interceptor Exception
Ich versuche, die Protokollierung mit Retrofit zu aktivieren, erhalte jedoch die folgende Ausnahme:
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)
Und so mache ich es:
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();
}
}
Ich habe versucht, nur einen Abfangjäger hinzuzufügen, bin aber immer noch abgestürzt. Ich benutze diese Abhängigkeiten:
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'
Was mache ich hier falsch?
BEARBEITENTja das ist peinlich ... das problem hat sich von selbst gelöst. Ich habe nichts geändert, ich überarbeite alle meine Commits und beidesRetrofitClient
undbuild.gradle
hat sich nicht geändert. Das Problem hing daher nicht mit Gradle-Abhängigkeiten oder -Versionen zusammen.
Zum Glück wird jemand etwas Licht auf diese Ausnahme werfen!