Retrofit дает EOFException только в первый раз
Я использую framework Retrofit в первый раз в моем проекте Android. Он обрабатывает связь с бэкэндом. Теперь самое странное, что на Android 4.4 все работает как шарм. На каждой версии ниже. Я получаю java типа RetrofitError.Ио.EOFException. Поэтому он терпит неудачу в первый раз, а затем, когда я нажимаю кнопку повтора, он работает. Так почему же это не в первый раз?
Я хочу исправить это, потому что это раздражает, что пользователи должны нажать повторить попытку...
У кого-нибудь есть решение для этого?
3 ответов
Я нашел решение. В Android 4.4 они работают с OkHttpclient, поэтому он работает на 4.4, а не на старых версиях Android.
чтобы решить эту проблему, добавьте зависимость в gradle:
compile 'com.squareup.okhttp:okhttp-tests:1.5.1'
и создать новый клиент, как это:
OkHttpClient client = new OkHttpClient();
добавьте этот новый клиент в restadapter, чтобы использовать это:
setClient(new OkClient(client))
ошибка должна быть решена сейчас.
эта ошибка, похоже, происходит из-за предыдущего повторного использования соединения. Вы можете отключить keepalive, чтобы избежать этого:
System.setProperty("http.keepAlive", "false");
Я, наконец, решить эту проблему.решением было использовать как OkClient, так и OkHttp. После добавления этих двух библиотек я установил клиента на Retrofit в OkHttp, как это
RestAdapter restAdapter = new RestAdapter.Builder()
.setErrorHandler(new ErrorRetrofitHandlerException())
.setEndpoint("Yout base URL")
.setLogLevel(RestAdapter.LogLevel.FULL)
.setClient(new OkClient(new OkHttpClient())) //Http Client
.build();