¿Hay un reemplazo para el RequestInterceptor en Retrofit 2?
Me encontré con un problema que RequestInterceptor
se ha eliminado de la Retrofit 2 . Anteriormente, mi constructor RestAdapter era el siguiente:
private RestAdapter.Builder getBuilder(RequestInterceptor requestInterceptor) { RestAdapter.Builder builder = new RestAdapter.Builder() .setEndpoint(BuildConfig.SERVER_URL) .setClient(connectionClient) .setRequestInterceptor(requestInterceptor) .setConverter(new JacksonConverter()); return builder; }
Por lo que sé, en este momento se recomienda utilizar interceptor
de la biblioteca OkHttp
lugar de RequestInterceptor
.
- Retrofit error de lanzamiento Se esperaba BEGIN_ARRAY pero era BEGIN_OBJECT
- Java.lang.NoClassDefFoundError: io.reactivex.Observable
- Patrón de repositorio con SqlBrite / SqlDelight (base de datos sin conexión) y Retrofit (solicitud Http)
- Primavera Android Vs Retrofit
- Desmontaje de desmontaje de Retrofit + GSON
No pude encontrar la aplicación ejemplar de este enfoque, por lo tanto, estar agradecido por cualquier ayuda en este asunto.
¡Gracias!
- Cómo implementar un WebSocket con Retrofit + RX
- Operadores de manipulación de errores de Retrofit 2 y RxJava
- HTTP GET con el cuerpo de la solicitud RETROFIT
- Retrofit 2 RxJava - Gson - Deserialización "Global", tipo respuesta de cambio
- NetworkOnMainThreadException con retrofit-beta2 y rxjava
- Cómo llamar al método GET simple usando "Retrofit"
- Solicitud por lotes utilizando Retrofit
- No simule ninguna red con Retrofit y MockWebServer
Intercepciones tienen que ser fijados a través de OkHttp
en retrofit 2
OkHttpClient okHttpClient = new OkHttpClient(); okHttpClient.interceptors().add(...)
Y luego regístrelo en Retrofit
Retrofit restAdapter = new Retrofit.Builder() .baseUrl(Constants.BASE_URL) .client(okHttpClient) .addConverterFactory(GsonConverterFactory.create()) .build();
Los interceptores se pueden agregar al propio cliente.
okHttpClient.interceptors().add(...)
Cuando está ejecutando esta línea. En realidad está agregando su propio interceptor en la lista existente de interceptores ya agregados en el cliente.
Puedes crear tu propio interceptor
public class HttpLoggingInterceptor implements Interceptor { private final static String TAG = LogUtils.makeLogTag(HttpLoggingInterceptor.class); @Override public Response intercept(Chain chain) throws IOException { Request request = chain.request(); LOGD(TAG, "********************** REQUEST START **********************"); LOGD(TAG, "REQUEST URL -> "+request.urlString()); LOGD(TAG, "REQUEST HEADERS -> "+request.headers()); LOGD(TAG, "********************** REQUEST END **********************"); Response response = chain.proceed(chain.request()); LOGD(TAG, "********************** RESPONSE START **********************"); LOGD(TAG, "RESPONSE CODE -> "+response.code()); LOGD(TAG, "RESPONSE HEADERS -> "+response.headers()); LOGD(TAG, "********************** RESPONSE END **********************"); return response; }
}
Y después plugin / lo agrega al cliente en cualquier momento antes de construir servicio
public static <S> S createService(Class<S> serviceClass) { okHttpClient.interceptors().add(new HttpLoggingInterceptor()); Retrofit retrofit = builder.client(okHttpClient).build(); return retrofit.create(serviceClass); }
- ¿Cuál es la diferencia entre setVideoPath de VideoView y setVideoURI
- El archivo mapping.txt no se genera al usar Proguard