Android OkHttp InputStream java.IOException.closed
Utilizo un OkHttpClient
para descargar una base de datos en el servidor y para copiarlo en mi aplicación de Android, la solicitud está bien y obtendré el buen contenido.
Sin embargo cuando intento escribir mi byteStream
a mi archivo consigo un java.IOException.closed
. ¿Sabes lo que estoy haciendo mal?
- Retrofit 2 tutorial ejemplo, pero GsonConverterFactory error de visualización "No se puede resolver el símbolo"
- Error al resolver: okhttp loggin-interceptor
- OkHttp javax.net.ssl.SSLPeerUnverifiedException: Nombre de host domain.com no verificado
- Retrofit + RxJava no puede almacenar en caché las respuestas, los encabezados de respuesta sospechados
- Square`s OkHttp. Progreso de la descarga
Response httpResponse = webApiClient.execute( new WebApiRequest(WebApiMethod.DB_DOWNLOAD), context); if (httpResponse.code() == 200) { try { InputStream inputStream = httpResponse.body().byteStream(); File databasePath = context.getDatabasePath(Constant.DATABASE_NAME); FileOutputStream output = new FileOutputStream(databasePath); int bufferSize = 1024; byte[] buffer = new byte[bufferSize]; int len; while ((len = inputStream.read(buffer)) != -1) { output.write(buffer, 0, len); } success = true; } catch (Exception exc) { Utils.DisplayException(exc, context); } }
También intenté leer mi ByteStream
con un BufferedSink
pero el resultado era el mismo
BufferedSink sink = Okio.buffer(Okio.sink(databasePath)); sink.writeAll(httpResponse.body().source()); sink.close();
StackTrace:
java.io.IOException: closed at okio.RealBufferedSource$1.read(RealBufferedSource.java:367) at java.io.InputStream.read(InputStream.java:162) at com.org.dbconn.LoginActivity$DbDownloadTask.doInBackground(LoginActivity.java:475) at com.org.dbconn.LoginActivity$DbDownloadTask.doInBackground(LoginActivity.java:436) at android.os.AsyncTask$2.call(AsyncTask.java:288) at java.util.concurrent.FutureTask.run(FutureTask.java:237) at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) at java.lang.Thread.run(Thread.java:818)
- OkHttp 3 y HttpURLConnection
- ¿Cómo usar Retrofit y SimpleXML juntos para descargar y analizar un archivo XML de un sitio?
- Retrofit SocketTimeOutException al enviar datos multipartidarios o JSON en android
- Native crash en /system/lib/libssl.so utilizando Retrofit
- ¿Cómo hacer que OKHTTP envíe una solicitud sin un cuerpo de solicitud?
- InterruptedIOException al usar Retrofit2 con rx cuando retryOn
- Retrofit - Interceptar respuestas globalmente
- Añadir cookie a la solicitud del cliente OkHttp
Encuentro porqué la corriente fue cerrada, para una cierta prueba, yo estaba comprobando el contenido de mi secuencia de la salida con un System.out.println
, pero cuando usted lee o imprime la salida él cierra automáticamente la corriente, esto es porqué consigo un error .
En conclusión, una cosa para recordar con el flujo: leer o imprimir el outputStream lo cerrará.
- Detectar Moto 360 / circlular forma y onApplyWindowInsetListener no se llama
- Acceso a TextView de viewview de groupview desde getChildView () de ExpandableListView