Java网络编程从入门到精通(24):实现HTTP断点续传下载工具 - 编程入门网
数为5000-1000+1=4001。
6.开始下载文件,并计算下载进度(百分比形式)。如果网络连接断开时,文件仍未下载完,重新执行第一步。也果文件已经下载完,退出程序。 分析以上六个步骤得知,有四个主要的功能需要实现: 1.生成HTTP请求消息,并将其发送到服务器。这个功能由generateHttpRequest方法来完成。 2.分析HTTP响应消息头。这个功能由analyzeHttpHeader方法来完成。 3.得到下载文件的实际大小。这个功能由getFileSize方法来完成。 4.下载文件。这个功能由download方法来完成。 以上四个方法均被包含在这个断点续传工具的核心类HttpDownload.java中。在给出HttpDownload类的实现之前先给出一个接口DownloadEvent接口,从这个接口的名字就可以看出,它是用来处理下载过程中的事件的。下面是这个接口的实现代码:
Java网络编程从入门到精通(24):实现HTTP断点续传下载工具(3)时间:2011-01-12从上面的代码可以看出,DownloadEvent接口中有三个事件方法。在以后的主函数中将实现这个接口,来向控制台输出相应的信息。下面给出了HttpDownload类的主体框架代码:
上面的代码只是HttpDownload类的框架代码,其中的方法并未直正实现。我们可以从中看出第012、014、021和023行就是上述的四个主要的方法。在016和018行的addHeaderToMap和analyzeFirstLine方法将在analyzeHttpHeader方法中用到。而025和027行的getHeader和getIntHeader方法在getFileSize和download方法都会用到。上述的八个方法的实现都会在后面给出。 001 private void generateHttpRequest(OutputStream out, String host, 002 String path, long startPos) throws IOException 003 { 004 OutputStreamWriter writer = new OutputStreamWriter(out); 005 writer.write("GET " + path + " HTTP/1.1\r\n"); 006 writer.write("Host: " + host + "\r\n"); 007 writer.write("Accept: */*\r\n"); 008 writer.write("User-Agent: My First Http Download\r\n"); 009 if (startPos > 0) // 如果是断点续传,加入Range字段 010 writer.write("Range: bytes=" + String.valueOf(startPos) + "-\r\n"); 011 writer.write("Connection: close\r\n\r\n"); 012 writer.flush(); 013 } 这个方法有四个参数: 1.OutputStream out 使用Socket对 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |