Iniciar sesión en Retrofit 2.0

La versión anterior de Retrofit utiliza RestAdapter y tiene la disposición de habilitar los Logs. ¿Por qué se quita esta función en Retrofit 2.0 ?

Para habilitar el registro, tengo que hacer ..

Retrofit retrofit = new Retrofit.Builder() .baseUrl(BASE_URL) .addConverterFactory(GsonConverterFactory.create()) .build(); /** Handles Log */ retrofit.client().interceptors().add(new LoggingInterceptor()); class LoggingInterceptor implements Interceptor { @Override public Response intercept(Interceptor.Chain chain) throws IOException { Request request = chain.request(); long t1 = System.nanoTime(); Logger.d(String.format("Sending request %s on %s%n%s", request.url(), chain.connection(), request.headers())); Response response = chain.proceed(request); long t2 = System.nanoTime(); Logger.d(String.format("Received response for %s in %.1fms%n%s", response.request().url(), (t2 - t1) / 1e6d, response.headers())); // Logger.d(""+new String(response.body().bytes())); return response; } 

Esta es la única solución para esto? La disposición anterior era muy útil …

La intención de Retrofit es realizar el tipo seguro de / serialización. Probablemente ha caído las características que deben ser realizadas por el cliente http, como es el registro.

Razonablemente, el cliente http debe estar registrando las respuestas recibidas en lugar de Retrofit. Su pregunta es demasiado amplia, los chicos de Square deberían agregar más.

Para iniciar la retroadaptación 2 okhttp tiene el registrador siguiente:

  private OkHttpClient getOkHttpClient() { HttpLoggingInterceptor logging = new HttpLoggingInterceptor(); if (BuildConfig.LOG_HTTP_CALLS) { logging.setLevel(HttpLoggingInterceptor.Level.BODY); } return new OkHttpClient.Builder() .addInterceptor(logging).build(); } 

Y la dependencia en build.gradle es

compile 'com.squareup.okhttp3:logginginterceptor:2.1.0'

 OkHttpClient okHttpClient = new OkHttpClient.Builder() .addInterceptor(new Interceptor() { @Override public Response intercept(Chain chain) throws IOException { Request request = chain.request(); if (BuildConfig.DEBUG) { Log.e(getClass().getName(), request.method() + " " + request.url()); Log.e(getClass().getName(), "" + request.header("Cookie")); RequestBody rb = request.body(); Buffer buffer = new Buffer(); if (rb != null) rb.writeTo(buffer); LogUtils.LOGE(getClass().getName(), "Payload- " + buffer.readUtf8()); } return chain.proceed(request); } }) .readTimeout(60, TimeUnit.SECONDS) .connectTimeout(60, TimeUnit.SECONDS) .build(); iIdgardServices = new Retrofit.Builder() .baseUrl("Your Base URL") .client(okHttpClient) .addConverterFactory(GsonConverterFactory.create()) .build() .create(Your Service Interface .class); 

Funciona para mi

 private static final String HOST = Urls.HOST; private static final OkHttpClient.Builder mHttpClientBuilder = new OkHttpClient.Builder(); static { //add this line PS: `Level.NONE` is close mHttpClientBuilder.addInterceptor(new HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY)) .addInterceptor(new EncryptInterceptor()) .connectTimeout(30, TimeUnit.SECONDS) .retryOnConnectionFailure(true) .addNetworkInterceptor(new TokenInterceptor()) .authenticator(new DefaultAuthenticator()); } public static <S> S createService(Class<S> serviceClass) { OkHttpClient client = mHttpClientBuilder.build(); Retrofit retrofit = mBuilder.client(client).build(); return retrofit.create(serviceClass); } 

Cambiar el logcat a DEBUG puede ver el registro!

  • ¿Cómo hacer frente a múltiples puntos finales de API usando Retrofit?
  • Retrofit 1.6: Call RestService con diferentes (TCP) -Ports
  • Cómo POST JSON todo en bruto en el cuerpo de una solicitud de Retrofit?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.