La documentación de Retrofit 2 dice:
Los encabezados que deben agregarse a cada solicitud se pueden especificar utilizando un interceptor OkHttp.
Se puede hacer fácilmente usando la versión anterior, aquí está el control de calidad relacionado.
Pero el uso de reequipamiento 2, no pude encontrar algo parecido setRequestInterceptor
o setInterceptor
método que se puede aplicar a Retrofit.Builder
objetos.
También parece que no hay RequestInterceptor
en OkHttp más. El documento de Retrofit nos remite a Interceptor que no entendí bien cómo usarlo para este propósito.
¿Cómo puedo hacer esto?
enqueue
no puedo ver los encabezados predeterminados.new OkHttpClient.Builder()
en su lugarnew OkHttpClient()
La última versión de actualización AQUÍ -> 2.1.0.
versión lambda:
versión larga fea:
versión completa:
archivo gradle (debe agregar el interceptor de registro si planea usarlo):
fuente
Para registrar su solicitud y respuesta, necesita un interceptor y también para configurar el encabezado, necesita un interceptor. Aquí está la solución para agregar ambos interceptores a la vez usando la actualización 2.1.
Ahora en su objeto de actualización agregue este encabezado en el cliente
fuente
Pruebe este tipo de encabezado para Retrofit 1.9 y 2.0. Para tipo de contenido Json.
Puede agregar muchos más encabezados, es decir
Añadir dinámicamente a los encabezados:
Llame a su método, es decir
O
Quiere pasar cada vez y luego crear un objeto HttpClient con http Interceptor:
Luego agregue al objeto de actualización
ACTUALIZAR si está utilizando Kotlin, elimine el
{ }
resto, no funcionaráfuente
En mi caso
addInterceptor()
no funcionó para agregar encabezados HTTP a mi solicitud, tuve que usaraddNetworkInterceptor()
. El código es el siguiente:Y el código interceptor:
Esto y más ejemplos sobre esta esencia
fuente
Si usa el método addInterceptor para agregar HttpLoggingInterceptor, no registrará las cosas que agregaron otros interceptores aplicados después de HttpLoggingInterceptor.
Por ejemplo: si tiene dos interceptores "HttpLoggingInterceptor" y "AuthInterceptor", y HttpLoggingInterceptor se aplica primero, entonces no puede ver los parámetros http o los encabezados establecidos por AuthInterceptor.
Lo resolví mediante el método addNetworkInterceptor.
fuente
HttpLoggingInterceptor
como último interceptor para ver la solicitud final.Utilice este cliente de modificación
Estoy pasando el JWT junto con cada solicitud. No te preocupes por los nombres de las variables, es un poco confuso.
fuente
En kotlin, agregar interceptor se ve de esa manera:
fuente
La biblioteca RetrofitHelper escrita en kotlin, le permitirá hacer llamadas a la API, usando unas pocas líneas de código.
Agregue encabezados en su clase de aplicación como este:
Y luego haz tu llamada:
Para más información ver la documentación
fuente
La versión de Kotlin sería
fuente