Java网络编程从入门到精通(24):实现HTTP断点续传下载工具 - 编程入门网
象的getOutputStream方法得到的输出流。
2.String host 下载文件所在的服务器的域名或IP。 3.String path 下载文件在服务器上的路径,也就跟在GET方法后面的部分。 Java网络编程从入门到精通(24):实现HTTP断点续传下载工具(4)时间:2011-01-124.long startPos 从文件的startPos位置开始下载。如果startPos为0,则不生成Range字段。 001 private void analyzeHttpHeader(InputStream inputStream, DownloadEvent de) 002 throws Exception 003 { 004 String s = ""; 005 byte b = -1; 006 while (true) 007 { 008 b = (byte) inputStream.read(); 009 if (b == ''\r'') 010 { 011 b = (byte) inputStream.read(); 012 if (b == ''\n'') 013 { 014 if (s.equals("")) 015 break; 016 de.viewHttpHeaders(s); 017 addHeaderToMap(s); 018 s = ""; 019 } 020 } 021 else 022 s += (char) b; 023 } 024 } 025 026 private void analyzeFirstLine(String s) 027 { 028 String[] ss = s.split("[ ]+"); 029 if (ss.length > 1) 030 stateCode = ss[1]; 031 } 032 private void addHeaderToMap(String s) 033 { 034 int index = s.indexOf(":"); 035 if (index > 0) 036 httpHeaders.put(s.substring(0, index), s.substring(index + 1) .trim()); 037 else 038 analyzeFirstLine(s); 039 } 第001 ~ 024行:analyzeHttpHeader方法的实现。这个方法有两个参数。其中inputStream是用Socket对象的getInputStream方法得到的输入流。这个方法是直接使用字节流来分析的HTTP响应头(主要是因为下载的文件不一定是文本文件;因此,都统一使用字节流来分析和下载),每两个""r"n"之间的就是一个字段和字段值对。在016行调用了DownloadEvent接口的viewHttpHeaders事件方法来枚举每一个响应头字段。 第026 ~ 031行:analyzeFirstLine方法的实现。这个方法的功能是分析响应消息头的第一行,并从中得到状态码后,将其保存在stateCode变量中。这个方法的参数s就是响应消息头的第一行。 第032 ~ 039行:addHeaderToMap方法的实现。这个方法的功能是将每一个响应请求消息字段和字段值加到在HttpDownload类中定义的httpHeaders哈希映射中。在第034行查找每一行消息头是否包含":",如果包含":",这一行必是消息头的第一行。因此,在第038行调用了analyzeFirstLine方法从第一行得到响应状态码。
Java利大園殻貫秘壇欺娼宥?24??糞?HTTP僅泣偬勧和墮垢醤(5)扮寂:2011-01-12宸曾倖圭隈繍氏壓getFileSize才download嶄瓜距喘。万断議孔嬬頁貫?哘?連嶄功象忖粁忖誼欺?哘議忖粁峙。getHeader誼欺忖憲堪侘塀議忖粁峙?遇getIntHeader誼欺屁方侏議忖粁峙。
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |