简单了解http协议

客户端连上web服务器后,若想获得web服务器中的某个web资源,需遵循一定的通讯格式,HTTP协议用于定义客户端与web服务器通讯的格式。

HTTP1.0和HTTP1.1的区别

  • HTTP1.0协议:客户端与web服务器建立连接后,只能获得一个web资源。
  • HTTP1.1协议:允许客户端与web服务器建立连接后,在一个连接上获取多个web资源。

HTTP请求

客户端连上服务器后,向服务器请求某个web资源,称之为客户端向服务器发送了一个HTTP请求。一个完整的HTTP请求包括一个请求行、若干请头、以及实体内容。

  • 请求行:
    用于描述客户端的请求方式、请求的资源名称,以及使用的HTTP协议版本号。请求方式常用的有GET、POST。

  • 请求头:
    用于描述客户端请求那台主机,以及客户端的一些环境信息等。

    • Accept:text/html;image/*—客户机支持的数据类型。
    • Accept-Charset:ISO-8859-1—客户机采用的编码。
    • Accept-Encoding:gzip,compress—客户机支持的压缩格式。
    • Accept-Language:en-us,zh-cn—客户机的语言环境。
    • Host:www.it315.org:80—客户机想访问的主机名。
    • If-Modified-Since:Tue,11 Jul 2000 18:23:51 GMT—资源的缓冲时间。
    • Referer:http://www.it315.org/index.jsp—告诉服务器,客户机是从哪个资源来访问服务器。
    • User-Agent:Mozilla/4.0(compatible;MSIE5.5;Windows NT 5.0)—客户机的软件环境。
    • cookie—客户机向服务器带数据。
    • Connection:close/Keep-Alive—请求完了之后,保持连接还是断开连接。
    • Date:Tue,11 Jul 2000 18:23:51 GMT—当时的时间。

HTTP响应

一个响应的结构:响应头+一个空行+实体内容(代表服务器向客户端回送的数据)

  • 状态行
    描述服务器对请求的处理结果,格式:HTTP版本号 状态码 原因叙述。HTTP/1.1 200 OK,状态码用于表示服务器对请求的处理结果:
    • 100~199:表示成功接收请求,要求客户端继续提交下一次请求才能完成整个处理过程。
    • 200~299:表示成功接收并已完成整个处理过程,常用200。
    • 300~399:为完成请求,客户需要进一步细化请求。例:请求的资源已经移动一个新地址,常用302、307和304。
    • 400~499:客户端的请求有错误,常用404.
    • 500~599:服务器端出现错误,常用500.
  • 响应头
    描述服务器的基本信息,以及数据的描述,服务器通过这些数据的描述信息,可以通知客户端如何处理等一会儿它回送的数据。
    • Location:这个头配合302状态码使用,用于告诉客户端找谁。
    • Server:服务器通过这个头告诉浏览器服务器的类型。
    • Content-Encoding:告诉客户端,数据的压缩格式。
    • Content-Length:告诉客户端,回送数据的长度。
    • Content-Language:回送数据的语言环境。
    • Content-type:告诉客户端,回送数据的类型。
    • Last-Modified:当前资源的最后缓存时间。
    • Refresh:告诉浏览器,隔多长时间刷新一次。
    • Content-Disposition:告诉浏览器以下载方式打开数据。
    • Transfer-Encoding:告诉浏览器,数据的传送格式。
    • Set-Cookie:
    • ETag:缓冲相关的头。web应用的唯一标识符,会根据应用的内容改变而改变。这个头能做到实时更新。
    • Expires:告诉浏览器,把回送的资源缓存多长时间,-1或0,则是不缓冲。
    • Cache-Control:控制浏览器不要缓冲数据。
    • Pragma:控制浏览器不要缓冲数据。
    • Connection:响应完了,保持连接还是断开连接。
    • Date:当前的时间。
    • range头实现断点下载:
      Range头指示服务器只传输一部分WEB资源。这个头可以用来实现断点续传功能。Range字段可以通过三种格式设置要传输的字节范围:
      • Range:bytes=1000-2000—传输范围从1000到2000字节。
      • Range:bytes=1000- —传输WEB资源中第1000个字节以后的所有内容。
      • Range:bytes=1000—传输最后1000个字节。
        Accept-Ranges:这个字段说明Web服务器是否支持Range,则返回Accept-Ranges:bytes,如果不支持,则返回Accept-Ranges:none。
        Content-Range:指定了返回的WEB资源的字节范围。这个字段值的格式是Content-Range:1000-3000/5000
URI url=new URL("http://localhost:8080/test/a.txt");
HttpURLConnection conn=(HttpURLConnection)url.openConnection();
conn.setRequestProperty("Range","bytes=5-");
InputStream in=conn.getInputStream();
int len=0;
byte buffer[] =new byte[1024];
FileOutputStream out=new FileOutputStream("c:\\a.txt",true);
while((len=in.read(buffer))>0){
    out.write(buffer,0,len);
}
in.close();
out.close();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值