如何恢复中断的下载

我正在尝试从Yahoo!下载大文件!如果没有在100秒之内完成下载,显然是由(不是我)设置的网站服务器断开下载。该文件足够小,通常可以成功传输。在数据速率很慢并且下载被断开的情况下,是否有办法在断开连接发生的文件偏移处恢复URLConnection?这是代码:

// Setup connection.

URL url = new URL(strUrl[0]);

URLConnection cx = url.openConnection();

cx.connect();

// Setup streams and buffers.

int lengthFile = cx.getContentLength();

InputStream input = new BufferedInputStream(url.openStream());

OutputStream output = new FileOutputStream(strUrl[1]);

byte data[] = new byte[1024];

// Download file.

for (total=0; (count=input.read(data, 0, 1024)) != -1; total+=count) {

publishProgress((int)(total*100/lengthFile));

output.write(data, 0, count);

Log.d("AsyncDownloadFile", "bytes: " + total);

}

// Close streams.

output.flush();

output.close();

input.close();

回答:

尝试使用“范围”请求标头:

// Open connection to URL.

HttpURLConnection connection = (HttpURLConnection) url.openConnection();

// Specify what portion of file to download.

connection.setRequestProperty("Range", "bytes=" + downloaded + "-");

// here "downloaded" is the data length already previously downloaded.

// Connect to server.

connection.connect();

完成此操作后,您可以seek在给定的位置(例如,在下载数据的长度之前X)开始在此处写入新下载的数据。确保X范围标头使用相同的值。

关于14.35.2范围检索请求的详细信息

更多详细信息和源代码可以在这里找到

以上是 如何恢复中断的下载 的全部内容, 来源链接: utcz.com/qa/402888.html

回到顶部