मैं सर्वर पर डेटाबेस डाउनलोड करने के लिए OkHttpClient
का उपयोग करता हूं और इसे अपने एंड्रॉइड एप्लिकेशन पर कॉपी करने के लिए अनुरोध करता हूं, अनुरोध ठीक है और मुझे अच्छी सामग्री मिलती है।एंड्रॉइड ओकेएचटीपी इनपुटस्ट्रीम java.IOException.closed
हालांकि जब मैं अपनी फ़ाइल में byteStream
लिखने का प्रयास करता हूं तो मुझे java.IOException.closed
मिलता है। क्या आप जानते हैं कि मैं क्या गलत कर रहा हूं?
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);
}
}
मैं भी पढ़ने के लिए करने की कोशिश की मेरी साथ ByteStream
एक BufferedSink
लेकिन परिणाम एक ही
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)
क्या आप अपना पूरा स्टैक ट्रेस पोस्ट कर सकते हैं? – apmartin1991
क्या आप किसी भी इंटरसेप्टर का उपयोग कर रहे हैं जो स्ट्रीम बंद कर सकता है? –