2016-07-13 2 views
21

Я пытаюсь включить протоколирование с Модернизированным, но я получаю это исключение:дооснащения каротажа перехватчик исключение

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) 

И это, как я это делаю:

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(); 
    } 
} 

Я попытался добавить только один перехватчик, но все еще сбой. Я использую эти зависимости:

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' 

Что я здесь делаю неправильно?

EDIT: Ну, это неловко ... проблема решена сама собой. Я ничего не изменил, я пересматриваю все свои коммиты, и оба RetrofitClient и build.gradle не изменились. Поэтому проблема не была связана с зависимостями или версиями градиентов.

К счастью, кто-то проливает свет на это исключение!

ответ

6

Вы можете попытаться добавить ниже зависимость

compile 'com.squareup.okhttp3:okhttp:3.4.1' 

И дайте мне знать, если есть какие-либо прогресс

Вы также можете обратиться в этом link.

38

дооснащения 2.1.0 опирается на OkHttp 3.3.0, поэтому я хотел бы использовать ту же версию для протоколирования перехватчик (который является частью OkHttp):

compile 'com.squareup.okhttp3:logging-interceptor:3.3.0' 
1

В моем случае эта пара зависимостей решена проблема:

compile 'com.squareup.retrofit2:retrofit:2.1.0' 
compile 'com.squareup.okhttp3:logging-interceptor:3.3.1' 

во всяком случае, проблема заключается в последовательности зависимостей ...

Смежные вопросы