volley implementar example consumir android retrofit2

android - implementar - retrofit post



Reorganizar la excepción de interceptor de registro (4)

Estoy intentando habilitar el registro con Retrofit pero obtengo esta excepción:

07-13 12:44:53.278 28698-29248/com.xxxx.debug E/AndroidRuntime: FATAL EXCEPTION: OkHttp Dispatcher Process: com.xxxx.debug, PID: 28698 java.lang.NoSuchMethodError: No virtual method log(Ljava/lang/String;)V in class Lokhttp3/internal/Platform; or its super classes (declaration of ''okhttp3.internal.Platform'' appears in /data/data/com.xxxx.debug/files/instant-run/dex/slice-realm-optional-api_16b022358933b490d810e358ea76b13cd4d88163-classes.dex) at okhttp3.logging.HttpLoggingInterceptor$Logger$1.log(HttpLoggingInterceptor.java:109) at okhttp3.logging.HttpLoggingInterceptor.intercept(HttpLoggingInterceptor.java:157) at okhttp3.RealCall$ApplicationInterceptorChain.proceed(RealCall.java:190) at com.xxxx.api.RetrofitClient$1.intercept(RetrofitClient.java:59) at okhttp3.RealCall$ApplicationInterceptorChain.proceed(RealCall.java:190) at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:163) at okhttp3.RealCall.access$100(RealCall.java:30) at okhttp3.RealCall$AsyncCall.execute(RealCall.java:127) at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) at java.lang.Thread.run(Thread.java:818)

Y así es como lo estoy haciendo:

public class RetrofitClient { private static MyService instance; public static MyService getInstance(Context context) { if (instance == null) { instance = newInstance(context); } return instance; } private static MyService newInstance(Context context) { Retrofit retrofit = new Retrofit.Builder() .baseUrl(context.getString(R.string.base_url)) .addConverterFactory(GsonConverterFactory.create()) .client(getClient()) .build(); return retrofit.create(MyService.class); } @NonNull private static OkHttpClient getClient() { HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor() .setLevel(HttpLoggingInterceptor.Level.BODY); OkHttpClient.Builder httpClient = new OkHttpClient.Builder() .addInterceptor(new Interceptor() { @Override public Response intercept(Chain chain) throws IOException { Request original = chain.request(); Request request = original.newBuilder() .header("api-key", "...") .header("version-app", "-") .header("platform", "android") .header("version", "-") .header("device", "-") .method(original.method(), original.body()) .build(); Response response = chain.proceed(request);// <-- CRASH return response; } }) .addInterceptor(interceptor); return httpClient.build(); } }

He intentado agregar solo un interceptor pero aun así falla. Estoy usando estas dependencias:

compile ''com.squareup.retrofit2:retrofit:2.1.0'' compile ''com.squareup.retrofit2:converter-gson:2.1.0'' compile ''com.squareup.okhttp3:logging-interceptor:3.4.1''

¿Qué estoy haciendo mal aquí?

EDITAR: Bueno, esto es embarazoso ... el problema se resolvió solo. No cambié nada, estoy revisando todos mis compromisos y tanto RetrofitClient como build.gradle no han cambiado. El problema, por lo tanto, no estaba relacionado con las dependencias o versiones gradle.

¡Afortunadamente alguien arrojará algo de luz sobre esta excepción!


¿Puedes intentar agregar la dependencia a continuación?

compile ''com.squareup.okhttp3:okhttp:3.4.1''

Y hazme saber si hay algún progreso.

También puede consultar este link .


En mi caso este par de dependencias resolvió el problema:

compile ''com.squareup.retrofit2:retrofit:2.1.0'' compile ''com.squareup.okhttp3:logging-interceptor:3.3.1''

De todos modos, el problema está en la consistencia de la dependencia ...


Frente al mismo problema, si enfrenta este problema en algún momento no aleatoriamente, intente reiniciar Android Studio con Invalidate / Restart. Tal vez se solucione en futuras actualizaciones.

1. Desinstalar la versión anterior.
2. Archivo-> Invalidar / Caché -> Invalidar y reiniciar.


Retrofit 2.1.0 se basa en OkHttp 3.3.0, así que usaría la misma versión para el Interceptor de Registro (que es parte de OkHttp):

compile ''com.squareup.okhttp3:logging-interceptor:3.3.0''