OkHttpClient lanza excepción después de actualizar a OkHttp3
Estoy usando las siguientes líneas de código para agregar un encabezado predeterminado a todas mis solicitudes enviadas usando Retrofit2:
private static OkHttpClient defaultHttpClient = new OkHttpClient(); static { defaultHttpClient.networkInterceptors().add(new Interceptor() { @Override public Response intercept(Chain chain) throws IOException { Request request = chain.request().newBuilder() .addHeader("Accept", "Application/JSON").build(); return chain.proceed(request); } }); }
Después de actualizar la actualización a la versión beta-3, tuve que actualizar OkHttp a OkHttp3 también (en realidad he cambiado los nombres de los paquetes de okhttp a okhttp3, la biblioteca se incluye dentro de retrofit). Después de eso recibo excepciones de esta línea:
- IllegalArgumentException: No se pudo localizar el adaptador de llamada para rx.Observable RxJava, Retrofit2
- Cómo obtener una respuesta genérica de Retrofit 2
- ¿Qué está causando HTTP FALLA: java.net.SocketException: Socket cerrado?
- Prueba de unidad de Android con Retrofit2 y Mockito o Robolectric
- ¿Cómo puedo llamar a múltiples solicitudes al mismo tiempo en Retrofit 2
defaultHttpClient.networkInterceptors().add(new Interceptor());
Causado por: java.lang.UnsupportedOperationException en java.util.Collections $ UnmodifiableCollection.add (Collections.java:932)
Causado por: java.lang.ExceptionInInitializerError
¿Cuál es el problema aquí?
- ¿Cómo hacer una solicitud de POST utilizando retrofit 2?
- Retrofit - android.os.NetworkOnMainThreadException
- Renovación de la referencia $ ref de objeto deserializante de JSON a su copia original
- Okhttp ignora la configuración de Dispatcher cuando se usa con Retrofit RxJavaCallAdapterFactory
- Apoyo de mejora SNI
- Error de actualización - Falta la dirección URL @GET o el parámetro @Url
- Retrofit indica que existe un token de autenticación cuando se desconecta
- Retrofit "Autorización", "Portador" + token
Tienes que usar el constructor si quieres crear OkHttp (3) objeto de cliente.
Intente cambiar esto:
private static OkHttpClient defaultHttpClient = new OkHttpClient();
A algo como esto:
OkHttpClient defaultHttpClient = new OkHttpClient.Builder() .addInterceptor( new Interceptor() { @Override public Response intercept(Interceptor.Chain chain) throws IOException { Request request = chain.request().newBuilder() .addHeader("Accept", "Application/JSON").build(); return chain.proceed(request); } }).build();
compile 'com.squareup.retrofit2:retrofit:2.1.0' compile "com.squareup.retrofit2:converter-gson:2.1.0" compile "com.squareup.retrofit2:adapter-rxjava:2.1.0" compile 'com.squareup.okhttp3:logging-interceptor:3.4.0'
Probablemente debería usar estas versiones. Simplemente póngalos , sincronice su gradle , elimine todas las importaciones y vuelva a intentarlo.
import okhttp3.Interceptor; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; import okhttp3.logging.HttpLoggingInterceptor; import retrofit2.Retrofit; import retrofit2.converter.gson.GsonConverterFactory;
- Problema de codificación con LoadData de WebView
- Problemas de compartir texto e imagen combinados con SHARE INTENT en Twitter