Error retrofit.RetrofitError: java.io.EOFException para Android
Busco mucho, he encontrado algunas soluciones como esta:
System.setProperty("http.keepAlive", "false"); arg0.addHeader("Connection", "close"); arg0.addHeader("Accept-Language", "en-US,en;q=0.8");
Los intento pero no trabajó para mí. ¿Cómo puedo corregir este error? Aquí está mi registro:
- SocketTimeoutException actualización de Android
- Android Retrofit2 Actualizar Oauth 2 Token
- ¿Por qué utilizar Retrofit cuando tenemos OkHttp
- No hay ningún error de este tipo al usar robospice-retrofit y getstream.io
- Square`s OkHttp. Progreso de la descarga
D/Retrofit(28969): ---> HTTP POST http://release.api.jeunesse.build.indus.ftven.net/app.php/api/users D/Retrofit(28969): Connection: close D/Retrofit(28969): Content-Type: application/json D/Retrofit(28969): Content-Length: 169 D/Retrofit(28969): {"birthday":"2010-06-05T12:16:42+0200", \ "devices":[{"device":"ae045e7bead6f933487a237f8b5f298d","primary":true}],\ "email":"test@test.fr","login":"test9","password":"9876"} D/Retrofit(28969): ---> END HTTP (169-byte body) D/Retrofit(28969): ---- ERROR http://release.api.jeunesse.build.indus.ftven.net/app.php/api/users D/Retrofit(28969): java.io.EOFException D/Retrofit(28969): at libcore.io.Streams.readAsciiLine(Streams.java:203) D/Retrofit(28969): at libcore.net.http.HttpEngine.readResponseHeaders(HttpEngine.java:579) D/Retrofit(28969): at libcore.net.http.HttpEngine.readResponse(HttpEngine.java:827) D/Retrofit(28969): at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:283) D/Retrofit(28969): at libcore.net.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:497) D/Retrofit(28969): at retrofit.client.UrlConnectionClient.readResponse(UrlConnectionClient.java:73) D/Retrofit(28969): at retrofit.client.UrlConnectionClient.execute(UrlConnectionClient.java:38) D/Retrofit(28969): at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:321) D/Retrofit(28969): at retrofit.RestAdapter$RestHandler.invoke(RestAdapter.java:240) D/Retrofit(28969): at $Proxy3.createUser(Native Method) D/Retrofit(28969): at fr.francetv.ludo.backend.services.businessdelegate .RetrieveFluxDonneesBDL.postInscription(RetrieveFluxDonneesBDL.java:323) D/Retrofit(28969): at fr.francetv.ludo.backend.services.metier.user .AdministrerUser.inscriptionUser(AdministrerUser.java:202) D/Retrofit(28969): at fr.francetv.ludo.backend.services.metier .AdministrerHelper.inscriptionUser(AdministrerHelper.java:158) D/Retrofit(28969): at fr.francetv.ludo.ui.inscription .InscriptionLoginFragment$3.background(InscriptionLoginFragment.java:136) D/Retrofit(28969): at fr.francetv.ludo.ui.inscription .InscriptionLoginFragment$3.background(InscriptionLoginFragment.java:1) D/Retrofit(28969): at fr.francetv.ludo.backend.services.AsyncHelper.doInBackground(AsyncHelper.java:28) D/Retrofit(28969): at fr.francetv.ludo.backend.services.AsyncHelper.doInBackground(AsyncHelper.java:1) D/Retrofit(28969): at android.os.AsyncTask$2.call(AsyncTask.java:287) D/Retrofit(28969): at java.util.concurrent.FutureTask.run(FutureTask.java:234) D/Retrofit(28969): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) D/Retrofit(28969): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) D/Retrofit(28969): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) D/Retrofit(28969): at java.lang.Thread.run(Thread.java:841) D/Retrofit(28969): ---- END ERROR
Gracias por tus respuestas
- Cómo obtener el cuerpo de la respuesta en okhttp cuando el código es 401
- OKhttp PUT ejemplo
- OKhttp: SSLProtocolException: Protocolo de enlace SSL finalizado
- Reemplazar los parámetros de ruta comunes en la modificación posterior 2 con okhttp
- OkHTTP y Picasso no funcionan juntos
- Autenticador Okhttp multihilo
- Configurar manualmente una cookie en cookiestore predeterminada y usarla en las peticiones okhttp
- Manera correcta de configurar caché para OkHttp en Android
Este es un problema conocido:
https://github.com/square/retrofit/issues/397
¿Intentaste usar OkHttp?
Finalmente resuelvo el problema. Como dijo mromer , la solución era usar tanto OkClient como OkHttp . Después de agregar estas dos librerías establecí el cliente en Retrofit a OkHttp así:
RestAdapter restAdapter = new RestAdapter.Builder() .setErrorHandler(new ErrorRetrofitHandlerException()) .setEndpoint(urlBase) .setLogLevel(RestAdapter.LogLevel.FULL) .setClient(new OkClient(new OkHttpClient())) .build();
- La última versión de com.google.android.gms para google play services revision 6
- JQuery – Android – El evento 'Keyup' no funciona en retroceso en Chrome