No puedo encontrar métodos relevantes en la API Retrofit para registrar cuerpos completos de solicitud / respuesta. Esperaba algo de ayuda en el Profiler (pero solo ofrece metadatos sobre la respuesta). Intenté configurar el nivel de registro en el generador, pero esto tampoco me ayuda:
RestAdapter adapter = (new RestAdapter.Builder()).
setEndpoint(baseUrl).
setRequestInterceptor(interceptor).
setProfiler(profiler).
setClient(client).
setExecutors(MyApplication.getWebServiceThreadPool()).
setLogLevel(LogLevel.FULL).
setLog(new RestAdapter.Log() {
@Override
public void log(String msg) {
Log.i(TAG, msg);
}
}).
build();
EDITAR: este código está funcionando ahora. No sé por qué no estaba funcionando antes. Posiblemente porque estaba usando alguna versión anterior de retroadaptación.
FULL
se supone que debe dar el cuerpo, pero no parece.Respuestas:
Solía
setLogLevel(LogLevel.FULL).setLog(new AndroidLog("YOUR_LOG_TAG"))
, me ayudó.ACTUALIZAR.
También puede intentar el uso de depuración
retrofit.client.Response
como modelo de respuestafuente
AndroidLog
, que clase es esa?response body
, aunque sí dice en el documento queLogLevel.FULL
debería darte elresponse body
.Retrofit 2.0 :
ACTUALIZACIÓN: @by Marcus Pöhls
Inicio de sesión en Retrofit 2
Retrofit 2 se basa completamente en OkHttp para cualquier operación de red. Dado que OkHttp es una dependencia entre pares de Retrofit 2, no necesitará agregar una dependencia adicional una vez que Retrofit 2 se lance como una versión estable.
OkHttp 2.6.0 se envía con un interceptor de registro como una dependencia interna y puede usarlo directamente para su cliente Retrofit. Retrofit 2.0.0-beta2 todavía usa OkHttp 2.5.0. Las versiones futuras aumentarán la dependencia de versiones OkHttp superiores. Es por eso que necesita importar manualmente el interceptor de registro. Agregue la siguiente línea a sus importaciones de gradle dentro de su archivo build.gradle para obtener la dependencia del interceptor de registro.
También puede visitar la página de Square GitHub sobre este interceptor
Agregar registro a la actualización 2
Al desarrollar su aplicación y para fines de depuración, es bueno tener una función de registro integrada para mostrar información de solicitud y respuesta. Dado que el registro ya no está integrado por defecto en Retrofit 2, debemos agregar un interceptor de registro para OkHttp. Afortunadamente, OkHttp ya viene con este interceptor y solo necesita activarlo para su OkHttpClient.
Recomendamos agregar el registro como el último interceptor, ya que esto también registrará la información que agregó con interceptores anteriores a su solicitud.
Niveles de registro
Registrar demasiada información hará explotar su monitor Android, es por eso que el interceptor de registro de OkHttp tiene cuatro niveles de registro: NINGUNO, BÁSICO, CABEZALES, CUERPO. Le guiaremos a través de cada uno de los niveles de registro y describiremos su salida.
Para obtener más información, visite: Retrofit 2 - Registro de solicitudes y respuestas
ANTIGUA RESPUESTA:
ya no es necesario iniciar sesión en Retrofit 2. El equipo de desarrollo eliminó la función de registro. Para ser honesto, la función de registro no era tan confiable de todos modos. Jake Wharton declaró explícitamente que los mensajes u objetos registrados son los valores asumidos y que no se puede probar que sean ciertos. La solicitud real que llega al servidor puede tener un cuerpo de solicitud cambiado u otra cosa.
Aunque no existe un registro integrado de forma predeterminada, puede aprovechar cualquier registrador Java y usarlo dentro de un interceptor OkHttp personalizado.
Para obtener más información sobre Retrofit 2, consulte: Retrofit : cómo comenzar y crear un cliente Android
fuente
Actualización para Retrofit 2.0.0-beta3
Ahora tienes que usar okhttp3 con el constructor. Además, el viejo interceptor no funcionará. Esta respuesta está diseñada para Android.
Aquí hay una copia rápida de pegar para usted con las nuevas cosas.
1. Modifique su archivo gradle a
2. Verifique este código de muestra:
con las nuevas importaciones. Puede eliminar Rx si no lo usa, también elimine lo que no usa.
Prima
Sé que es offtopic pero me parece genial.
En caso de que haya un código de error http no autorizado , aquí hay un interceptor. Yo uso eventbus para transmitir el evento.
toma de código de https://github.com/AndreiD/UltimateAndroidTemplateRx (mi proyecto).
fuente
No parece haber una forma de hacer cuerpo básico +, pero puede usar COMPLETO y filtrar los encabezados que no desea.
Parece que al anular el registro, el cuerpo tiene el prefijo de una etiqueta similar a
Por lo tanto, debería ser fácil registrar el cuerpo básico + ajustando el filtro personalizado. Estoy usando una lista negra, pero también podría usarse una lista blanca dependiendo de sus necesidades.
fuente
El siguiente código funciona tanto con el encabezado como sin el encabezado para imprimir la solicitud y la respuesta del registro. Nota: Solo comente la línea .addHeader () si no está usando el encabezado.
fuente
Espero que este código te ayude a iniciar sesión.
solo necesita agregar un interceptor en su
Build.Gradle
marcaRetrofitClient
.Primer paso
Agregue esta línea a su
build.gradle
Segundo paso
Haga su cliente de modificación
Vocación
fuente
Si está utilizando Retrofit2 y okhttp3, debe saber que Interceptor funciona en cola. Agregue loggingInterceptor al final, después de sus otros interceptores:
fuente
ZoomX: Android Logger Interceptor es un gran interceptor que puede ayudarlo a resolver su problema.
fuente
Para Android Studio antes de 3.0 (usando Android Motinor)
https://futurestud.io/tutorials/retrofit-2-log-requests-and-responses
https://www.youtube.com/watch?v=vazLpzE5y9M
Y para Android Studio desde 3.0 y superior (el uso de Android Profiler como monitor de Android se reemplaza por Android Profiler)
https://futurestud.io/tutorials/retrofit-2-analyze-network-traffic-with-android-studio-profiler
fuente