tutorial android retrofit okhttp retrofit2 okhttp3

android - tutorial - retrofit parameters



OkHttpClient lanza una excepción después de actualizar a OkHttp3 (2)

Debe usar el constructor si desea crear el objeto Cliente OkHttp (3).

Intenta 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();

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, acabo de cambiar los nombres de los paquetes de okhttp a okhttp3, la biblioteca está incluida dentro de la modificación). Después de eso obtengo excepciones de esta línea:

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í?


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ías usar estas versiones. Simplemente colóquelos, sincronice su gradle , elimine todas las importaciones e intente nuevamente.

import okhttp3.Interceptor; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; import okhttp3.logging.HttpLoggingInterceptor; import retrofit2.Retrofit; import retrofit2.converter.gson.GsonConverterFactory;