2017-01-19 1 views
3

Ich fordere eine JSON-Datei mit OkHttp3, RetroFit 2.0 + RxObservable und es wirft Schnittstelle nicht implementiert. Dies scheint nur für Benutzer von Android 4.3 zu erfolgen, die eine ältere Version unserer App ausführen und auf die neueste App-Version aktualisieren.Fatal - Schnittstelle nicht implementiert - OkHttp3 - Android

01-19 16:43:31.089 1611-1692/? E/AndroidRuntime: FATAL EXCEPTION: IntentService[MyDataIntentService] 
            java.lang.IncompatibleClassChangeError: interface not implemented 
             at okhttp3.internal.Util.closeQuietly(Util.java:100) 
             at okhttp3.internal.connection.StreamAllocation.streamFailed(StreamAllocation.java:332) 
             at okhttp3.internal.http.RetryAndFollowUpInterceptor.recover(RetryAndFollowUpInterceptor.java:209) 
             at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:132) 
             at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92) 
             at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67) 
             at okhttp3.logging.HttpLoggingInterceptor.intercept(HttpLoggingInterceptor.java:212) 
             at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92) 
             at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67) 
             at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:179) 
             at okhttp3.RealCall.execute(RealCall.java:63) 
             at retrofit2.OkHttpCall.execute(OkHttpCall.java:174) 
             at retrofit2.adapter.rxjava.RxJavaCallAdapterFactory$CallOnSubscribe.call(RxJavaCallAdapterFactory.java:144) 
             at retrofit2.adapter.rxjava.RxJavaCallAdapterFactory$CallOnSubscribe.call(RxJavaCallAdapterFactory.java:125) 
             at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50) 
             at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30) 
             at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50) 
             at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30) 
             at rx.Observable.subscribe(Observable.java:8759) 
             at rx.Observable.subscribe(Observable.java:8726) 
             at rx.Observable.subscribe(Observable.java:8581) 
             at com.somepackage.someclass.loadSomeJSONThing(MyFile.kt:61) 

Hier ist der Aufruf:

//get returns Observable<Any> 
myApi.getSomeObj("some_id") 
    .subscribe({ responseHandler(it) }, 
       { Crashlytics.logException(it) }) 

Antwort

2

Ich denke, dies ist eine OkHttp Regression ist. Wir gehen fälschlicherweise davon aus, dass SocketCloseable implementiert, was bei älteren Geräten nicht der Fall ist. Wird sehr bald reparieren.

hier Korrigiert: https://github.com/square/okhttp/pull/3125

+0

Wie kann ich dies in dem mittleren Zeitfehler behandeln ?? –

+0

Für API 16 habe ich nicht die Möglichkeit, Ressourcen zu versuchen. –

+0

@TimNuwin Sie konnten den Snapshot nicht verwenden oder Sie könnten auf den nächsten Build warten. –

Verwandte Themen