知识大全 Java实现基于http协议的网络文件下载

Posted

篇首语:天才就是百分之九十九的汗水加百分之一的灵感本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Java实现基于http协议的网络文件下载相关的知识,希望对你有一定的参考价值。

Java实现基于http协议的网络文件下载  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

   HTTP协议工作方式

  基于HTTP协议的客户/服务器模式的信息交换过程 它分四个过程 建立连接 发送请求信息 获取服务器响应状态 关闭连接 其中较为复杂的过程是:发送请求信息 获取服务器响应状态

   )向服务器发送请求信息

  一个HTTP请求由一个请求行 可选数目的请求标题 一个空白行 以及在POST情况下的一些额外的数据组成 请求行的格式是

  Method Request URI HTTP Vsersion CRLF

  Method表示请求方法 如GET和POST

  Request URI标识了要请求的资源

  HTTP Version表示请求的HTTP协议版本

  CRLF表示回车换行

  HTTP请求报文格式如下:

  HTTP Command:       //方法字段(GET方法 POST方法)

  URI:                //URL字段 发送请求至保存该网站的服务器

  HTTP Version:       //协议版本字段

  Accept:             //指示可被接受的请求回应的介质类型范围列表

  Accept Language:    //限制了请求回应中首选的语言为简体中文 否则使用默认值

  Accept Encoding:    //限制了回应中可接受的内容编码值

  User Agent:         //定义用户代理 即发送请求的浏览器类型

  Host:               //定义了目标所在的主机

  Connection:         //告诉服务器使用连接类型

   )获取服务器响应状态

  在发送HTTP请求行以后 程序就可以读取服务器的响应状态了 HTTP响应状态行包括 HTTP 状态码和一些HTTP响应标题

  HTTP回应报文

  HTTP Version: HTTP/        //服务器用的是HTTP/ 版本

  HTTP Status:              //请求成功 信息可以读取 包含在响应的报文中

  Date:                        //响应报文的时间

  Server:                      //响应报文的服务器

  X Powered By:                //表明运行环境

  Set cookie:                 //

  Vary:                        //

  Content Length:             //表明实体的长度

  Connection:                 //告诉客户机在报文发送完毕后连接的状态

  Content Type:              //表明实体中的对象类型(文档)

  Binary Data:              //二进制数据

  状态码表示响应类型 常用的有

   ××  保留

   ××  表示请求成功地接收

   ××  为完成请求客户需进一步细化请求

   ××  客户错误

   ××  服务器错误

  在程序中间 如果读到 HTTP/ OK 这样的字符串 表明欲下载文件存在 该服务器支持断点续传 可以使用多线程下载 如果读到 HTTP/ OK 这样的字符串 表明欲下载文件存在 但该服务器不支持断点续传 只可以使用单线程下载

   实现代码

  Java代码

  import java io IOException;

  import java io InputStream;

  import java io RandomAccessFile;

  import HttpURLConnection;

  import URL;

  public class TestDownFile

  public static void main(String[] args)

  String sURL = ;

  int nStartPos= ;

  int nRead= ;

  String sName= book rar ;

  String sPath= e:\\\\temp ;

  try

  URL url = new URL(sURL);

  //打开连接

  HttpURLConnection Connection = (HttpURLConnection) url

   openConnection();

  //获得文件长度

  long nEndPos =getFileSize(sURL);

  RandomAccessFile oSavedFile= new RandomAccessFile(sPath+ \\\\ +sName rw );

  ( User Agent Internet Explorer );

  String sProperty = bytes= + nStartPos + ;

  //告诉服务器book rar这个文件从nStartPos字节开始传

  ( RANGE sProperty);

  System out println(sProperty);

  InputStream input = ();

  byte[] b = new byte[ ];

  //读取网络文件 写入指定的文件中

  while ((nRead = input read(b )) >

  && nStartPos < nEndPos )

  oSavedFile write(b nRead);

  nStartPos += nRead;

  

  ();

   catch (Exception e)

  e printStackTrace();

  

  

  //  获得文件长度

  public static long getFileSize(String sURL)

  int nFileLength = ;

  try

  URL url = new URL(sURL);

  HttpURLConnection Connection = (HttpURLConnection) url

   openConnection();

  ( User Agent Internet Explorer );

  int responseCode = ();

  if (responseCode >= )

  System err println( Error Code : + responseCode);

  return ; // represent access is error

  

  String sHeader;

  for (int i = ;; i++)

  sHeader = (i);

  if (sHeader != null)

  if (sHeader equals( Content Length ))

  nFileLength = Integer parseInt(Connection

   getHeaderField(sHeader));

  break;

  

   else

  break;

  

   catch (IOException e)

  e printStackTrace();

   catch (Exception e)

  e printStackTrace();

  

  System out println(nFileLength);

  return nFileLength;

  

cha138/Article/program/Java/hx/201311/26034

相关参考

知识大全 用C#实现基于TCP协议的网络通讯

用C#实现基于TCP协议的网络通讯  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!TCP协议是一个基

知识大全 用C#实现HTTP协议下的多线程文件传输

用C#实现HTTP协议下的多线程文件传输  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  很多人都

知识大全 Java网络协议 TCP和客户端/服务器范型

Java网络协议TCP和客户端/服务器范型  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在网络

知识大全 基于Socket的Java网络编程集粹

基于Socket的Java网络编程集粹  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!其实简单的分析

知识大全 基于URL的高层次Java网络编程

基于URL的高层次Java网络编程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nb

知识大全 实现HTTP断点续传下载工具(附源代码)

Java网络编程从入门到精通(24):实现HTTP断点续传下载工具(附源代码)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,

知识大全 用Java制作网络文件下载系统

用Java制作网络文件下载系统  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  由于Linux操作

知识大全 Java获取网络文件并插入数据库

Java获取网络文件并插入数据库  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  抓取各大网站的数

知识大全 java中http断点续传的原理(1)

  (一)断点续传的原理  其实断点续传的原理很简单就是在Http的请求上和一般的下载有所不同而已  打个比方浏览器请求服务器上的一个文时所发出的请求如下  假设服务器域名为文件名为downzip  

知识大全 谨防Java网络编程“陷阱”

谨防Java网络编程“陷阱”  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  大多数做过基于Web