web-dev-qa-db-fra.com

java.io.IOException: fin de flux inattendue

obtenir un problème lors de l'écriture d'un fichier vidéo volumineux à l'aide de 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)));
            String response = new String(bytes.toByteArray());
13
JosephM

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

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