java.io.IOException: fin de stream inattendue

problème lors de l’écriture d’un fichier vidéo volumineux avec httpurlconnection.

java.io.IOException: unexpected end of stream on Connection{192.1.4.55, proxy=DIRECT@ hostAddress=192.1.4.55 cipherSuite=none protocol=http/1.1} (recycle count=0) W/System.err: at com.android.okhttp.internal.http.HttpConnection.readResponse(HttpConnection.java:210)W/System.err: at com.android.okhttp.internal.http.HttpTransport.readResponseHeaders(HttpTransport.java:80) W/System.err: at com.android.okhttp.internal.http.HttpEngine.readNetworkResponse(HttpEngine.java:904) W/System.err: at com.android.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:788) at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:443) at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:388) at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:501) 

le code de réponse est ici

 final InputStream is = connection.getInputStream(); final ByteArrayOutputStream bytes = new ByteArrayOutputStream(); final byte[] buffer = new byte[maxBufferSize]; int bytesRead; while ((bytesRead = is.read(buffer, 0, 1024)) != -1) { bytes.write(buffer, 0, bytesRead); } log.log(INFO, format("{0} took {4} ms", url, (currentTimeMillis() - start))); Ssortingng response = new Ssortingng(bytes.toByteArray()); 

Vérifiez-le si vous utilisez OkHttpClient, voici un paramètre retryOnConnectionFailure (false). Par défaut, il est faux, il suffit de le rendre vrai, puis l’erreur sera supprimée. Si tout va bien parce que j’ai le même problème et que je résous il suffit de le changer

 OkHttpClient client = new OkHttpClient.Builder() .retryOnConnectionFailure(true) .build(); 

Veuillez utiliser BufferedInputStream et BufferedOutputStream pour mettre en mémoire tampon les données des fichiers plus volumineux.

J’espère que ce code vous aidera.

 BufferedReader br = null; if (conn.getResponseCode() == 200) { Log.e("HTTP success code", "" + conn.getResponseCode()); InputStream inputStream = conn.getInputStream(); if (inputStream != null) br = new BufferedReader(new InputStreamReader(inputStream)); } else { Log.e("HTTP error code", "" + conn.getResponseCode()); InputStream inputStream = conn.getErrorStream(); if (inputStream != null) br = new BufferedReader(new InputStreamReader(inputStream)); } SsortingngBuilder builder = new SsortingngBuilder(); Ssortingng output; while ((output = br.readLine()) != null) { builder.append(output); } Log.e(reqTag + " Response :", builder.toSsortingng()); conn.disconnect(); 

Parfois, cette exception peut être ignorée, vous devrez peut-être réessayer.
par exemple, utilisez proxy charles votre téléphone portable wifi, téléchargement de fichier, charles Terminez cette connexion, vous recevrez la même exception.