知识大全 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协议的网络通讯 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!TCP协议是一个基
用C#实现HTTP协议下的多线程文件传输 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 很多人都
Java网络协议TCP和客户端/服务器范型 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在网络
基于Socket的Java网络编程集粹 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!其实简单的分析
基于URL的高层次Java网络编程 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nb
Java网络编程从入门到精通(24):实现HTTP断点续传下载工具(附源代码) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,
用Java制作网络文件下载系统 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 由于Linux操作
Java获取网络文件并插入数据库 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 抓取各大网站的数
(一)断点续传的原理 其实断点续传的原理很简单就是在Http的请求上和一般的下载有所不同而已 打个比方浏览器请求服务器上的一个文时所发出的请求如下 假设服务器域名为文件名为downzip
谨防Java网络编程“陷阱” 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 大多数做过基于Web