指点成金-最美分享吧

登录

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

佚名 举报

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

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

   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协议的网络通讯  以下文字资料是由(全榜网网)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!TCP协议是一个基

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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