Retrofit @GET – cómo mostrar la cadena de solicitud?

Estoy trabajando en una aplicación de Android que utiliza Retrofit para crear un cliente tranquilo. Con el fin de depurar las llamadas de redes, me gustaría mostrar o volcar la url que realmente se invoca. ¿Hay alguna forma de hacer esto? He incluido algún código a continuación que muestra cómo se está utilizando actualmente la aplicación.

Definición de interfaz de cliente:

import retrofit.Callback; import retrofit.http.Body; import retrofit.http.GET; import retrofit.http.Headers; import retrofit.http.POST; import retrofit.http.Path; // etc... public interface MyApiClient { @Headers({ "Connection: close" }) @GET("/{userId}/{itemId}/getCost.do") public void get(@Path("userId") String userId, @Path("itemId") String userId, Callback<Score> callback); //....etc } 

Servicio que utiliza el cliente generado:

 // etc... import javax.inject.Inject; import retrofit.Callback; import retrofit.RetrofitError; import retrofit.client.Response; @Inject MyApiClient myApiClient; // etc... myApiClient.getCost(myId, itemId, new Callback<Cost>() { @Override public void success(Cost cost, Response response) { Log.d("Success: %s", String.valueOf(cost.cost)); if (cost.cost != -1) { processFoundCost(cost); } else { processMissingCost(itemId); } stopTask(); } @Override public void failure(RetrofitError error) { handleFailure(new CostFailedEvent(), null); } }); } 

RetrofitError tiene un método getUrl() que devuelve la URL.

También la Response tiene un método getUrl() así dentro de la devolución de llamada.

Eso, y también puede especificar el nivel de registro según esta pregunta :

 RestAdapter adapter = (new RestAdapter.Builder()). //... setLogLevel(LogLevel.FULL).setLog(new AndroidLog("YOUR_LOG_TAG")) 

Aunque basado en los documentos , LogLevel.BASIC debe hacer lo que necesita.

 BASIC Log only the request method and URL and the response status code and execution time. 

call.request().url() , donde call es el tipo de retrofit2.Call .

Sí, puede habilitar el registro de depuración llamando a setLogLevel() en su RestAdapter.

Normalmente establezco el registro en LogLevel.FULL para las compilaciones de depuración como así:

 RestAdapter adapter = builder.setEndpoint("example.com") .setLogLevel(BuildConfig.DEBUG ? RestAdapter.LogLevel.FULL : RestAdapter.LogLevel.NONE) .build(); 

Esto imprimirá automáticamente toda la información asociada a sus peticiones HTTP, incluyendo la URL que está golpeando, los encabezados y el cuerpo de la solicitud y la respuesta.

  • Detener y reanudar las descargas utilizando Retrofit
  • Múltiples solicitudes con retroadaptación para combinar resultados
  • ¿Cómo puedo usar retrofit library con la barra de progreso?
  • RETROFIT POST Objeto Realm
  • ¿Cómo pasar los parámetros de Map <String, String> o el objeto a la petición POST mediante Retrofit?
  • Uso de la función de activación de llamadas en Retrofit
  • ¿Cómo debo manejar "No hay conexión a Internet" con Retrofit en Android
  • Retrofit: ¿agrega el parámetro runtime a la interfaz?
  • No se puede crear el convertidor para la clase com.squareup.okhttp.ResponseBody
  • Uso de URLs absolutas con Retrofit
  • Retrofit 2.0 beta1: cómo publicar cuerpo de cuerda cruda
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.