java.net.ProtocolException:意外的流结束,在慢速网络上的AsyncTask文件下载失败

时间:2016-01-08 05:34:31

标签: java android android-asynctask

我正在使用AsyncTask下载音频文件。文件正在高速互联网上下载,如wifi,但应用程序在移动数据等低速互联网上的流结束时出错。 我的下载文件代码是:

`URLConnection  conexion = urle.openConnection();
conexion.connect();
InputStream input = new BufferedInputStream(conexion.getInputStream());
totalSize = conexion.getContentLength();
OutputStream output = new FileOutputStream(st);
byte data[] = new byte[1024];
while ((count = input.read(data)) != -1) 
{
  output.write(data, 0, count);
  downloadedSize += count;
}                               
output.flush();
output.close();
input.close();`

以下异常即将来临:

`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)`

help

此链接错误是由于(通常在响应的内容长度标头中设置)大于响应中的实际数据。但怎么解决呢???

1 个答案:

答案 0 :(得分:0)

我遇到了类似的问题。最好使用Download Manager

如果网络发生变化,

DownloadManager会自动尝试下载并在慢速互联网连接上运行。