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:
- Reintentar la solicitud utilizando Retrofit 2
- ¿Cómo se maneja el error en Retrofit 2? ¿No encuentro la clase RetrofitError que sugiere la mayoría de las soluciones?
- Cómo crear getters y setters de Java cuando la clave del objeto es el número
- ¿Hay alguna manera de agregar parámetros de consulta a cada solicitud con Retrofit 2?
- Cómo manejar una cola para repetir solicitudes después de un fallo de red con retroadaptación
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); } }); }
- Retrofit de devolución de llamada en el hilo principal
- IllegalArgumentException en Retrofit / no debe tener bloque de reemplazo
- Okclient en Okclient no se puede aplicar a (okhttp3.okhttpclient)
- Obtener una matriz JSON de retrofit Response
- Retrofit 2.0 OnFailure - Respuesta sin procesar
- Formulario Retrofit Codificado y Multipart en solicitud individual
- ¿Existe una forma de reutilizar el código del constructor para la adaptación
- Javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Ancla de confianza para la ruta de certificación no encontrada
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.