java.net.ProtocolException: la fin inattendue de flux

Je suis confronté à un étrange problème, et je ne suis pas en mesure de le déboguer. J'ai mis en œuvre une logique pour le téléchargement des flux de données et suis à l'aide de Volley pour la même chose, j'ai personnalisé une logique peu dans HurlStack, addBodyIfExists de l'api,de sorte que le corps de type "application/octet-stream" peut être manipulé.

Ma logique est d'afficher des progrès de l'utilisateur, de sorte que l'INTERFACE utilisateur peut être mis à jour indiquant à l'utilisateur les progrès en téléchargement, ci-dessous ma logique.

            int toRead = length; //File length
            byte[] data = new byte[4096];
            connection.setDoOutput(true);
            if(length != -1) {
                connection.setFixedLengthStreamingMode(length);
            } else {
                connection.setChunkedStreamingMode(4096);
            }

            OutputStream os;
            int i;
            int count;

            os = connection.getOutputStream();
            int progress= 0;

               try {
                    for(i = 0; (count= is.read(data)) > 0; ++i) { //is, is not null and contains a valid input stream
                        os.write(data, 0, count); //at this line am getting unexpected end of stream
                        progress+= count;
                        if(i % 20 == 0) {
                            rs.deliverProgress(progress, 0L);
                            progress= 0;
                        }
                    }

                    os.flush();
                } finally {
                    if(is != null) {
                        is.close();
                    }

                    if(os != null) {
                        os.close();
                    }

                }

sur l'exécution de code ci-dessus reçois ce, bien que j'ai vérifié, les flux de sortie n'est pas nulle, ni faire des flux d'entrée, il échoue dans la première itération de lire en boucle elle-même, je vois qu'il a lu 4096 octets et d'essayer d'en écrire la même chose.

java.net.ProtocolException: unexpected end of stream
            at com.android.okhttp.internal.http.HttpConnection$FixedLengthSink.close(HttpConnection.java:326)
            at com.android.okio.RealBufferedSink.close(RealBufferedSink.java:174)
            at com.android.okio.RealBufferedSink$1.close(RealBufferedSink.java:142)

tout aider au débogage des ci-dessus sera-t-il très apprécié.

Essayez d'utiliser BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "utf-8")); writer.write(...); au lieu de os.write(...)
Êtes-vous en utilisant un enregistrement à l'intercepteur? Si oui, supprimez-le et exécutez. C'est parce que l'enregistrement de l'intercepteur épuise l'entrée ou la sortie d'un ruisseau, et puis cette exception est déclenchée, lorsque le traitement est sur le point de prendre place.
Je fais face à ce problème dans l'Émulateur

OriginalL'auteur Techfist | 2015-08-24