2015-12-16 25 views
5

Ho creato un progetto con Retrofit 2, okhttp e okhttp: logging-intercceptor.Arresto anomalo dell'applicazione su HttpLoggingInterceptor

private static APIInterface apiInterface; 
private static RestClient restClient; 
private static HttpLoggingInterceptor interceptor; 

OkHttpClient okHttpClient = new OkHttpClient(); 
    okHttpClient.setConnectTimeout(30, TimeUnit.SECONDS); 
    okHttpClient.setReadTimeout(30, TimeUnit.SECONDS); 
    okHttpClient.interceptors().add(new Interceptor() { 
     @Override 
     public Response intercept(Chain chain) throws IOException { 
      Request original = chain.request(); 

      Request.Builder requestBuilder = original.newBuilder() 
        .header("Accept", "application/json") 
        .header("X-Parse-Application-Id", Constants.PARSE_APP_ID) 
        .header("X-Parse-REST-API-Key", Constants.PARSE_REST_API) 
        .method(original.method(), original.body()); 

      Request request = requestBuilder.build(); 
      return chain.proceed(request); 
     } 
    }); 

    interceptor = new HttpLoggingInterceptor(); // got crash here 
    interceptor.setLevel(HttpLoggingInterceptor.Level.BODY); 

    okHttpClient.interceptors().add(interceptor); 

Qui è la mia traccia:

java.lang.VerifyError: com/squareup/okhttp/logging/HttpLoggingInterceptor 
    at com.rocker.rest.RestClient.setupRestClient(RestClient.java:62) 
    at com.rocker.rest.RestClient.<clinit>(RestClient.java:39) 
    at com.rocker.fragment.HistoryFragment.onCreateView(HistoryFragment.java:38) 

non sto usando Okio da SquareUp!

risposta

4

Hai letto questo? https://futurestud.io/blog/retrofit-2-log-requests-and-responses

Retrofit 2 si basa completamente sul OkHttp per qualsiasi operazione di rete. Poiché OkHttp è una dipendenza peer di Retrofit 2, non sarà necessario aggiungere un'ulteriore dipendenza una volta rilasciato Retrofit 2 come versione stabile .

OkHttp 2.6.0 viene fornito con un intercettore di registrazione come dipendenza interna da ed è possibile utilizzarlo direttamente per il client Retrofit. Retrofit 2.0.0-beta2 utilizza ancora OkHttp 2.5.0. Le versioni future saranno bump la dipendenza alle versioni successive di OkHttp. Ecco perché è necessario importare manualmente l'intercettore di registrazione . Aggiungere la seguente riga a le importazioni gradle nel file build.gradle per recuperare la dipendenza di intercettazione di registrazione .

compilazione 'com.squareup.okhttp: logging-intercettore: 2.6.0'

+1

il problema era con la versione di OkHttp, dopo il downgrade sulla 2.5.0 funziona bene – Drake

+0

pls vedono la mia risposta a http://stackoverflow.com/a/39601180/1145905 se è di aiuto – kip2

Problemi correlati