1.http1.0与http1.1区别
HTTP1.0---客户端与web服务器建立连接后,只能获得一个WEB资源。
HTTP1.1----允许客户端与web服务器建立连接后,在一个连接上获取多个web资源。
2.一个完整的HTTP请求包括:一个请求行,若干请求头,以及实体内容:
请求方式GET:
Z则可以在请求的URL地址后以 ?的形式带上交给服务器的数据,多个数据之间用&进行分隔。
http://index.html?name=xxx & pwd=xxx HTTP/1.1
特点:在URL地址上附带的参数是有限制的,数据容量不超过1K
请求方式POST:
可以在请求的实体内容中向服务器发送数据。传送数据量无限。
3.http请求头详解:
Accept: 用于告诉服务器,客户机支持的数据类型 Accept:text/html,image/*,*/*--表示什么都支持。 Accept-Charset:客户机采用的编码 Accept-Charset:iso-8859-1,utf-8,gbk Accept-Encoding:客户机支持的数据压缩格式 Accept-Encoding: gizp, compress Accept-Language: 客户机语言环境 Accept-Language: en-us, zh-cn Host: 客户机告诉服务器,想访问的主机名。 Host: localhost,192.168.xxxx ------- If-Modified-Since: 客户机通过这个头告诉服务器,资源缓存时间 If-Modified-Since: ------- Referer: 客户机告诉服务器,从哪个资源来访问服务器的。防盗链 Referer:www.loogle.com?xxx ------ User-Agent:告诉服务器,客户机的软件环境 User-Agent: Mozilla/4.0(Windows NT 5.0 ---- Connection :请求完是保存或关闭链接。 Connection : close(关闭,Keep-Alive(保存) ----- Date:当前时间4.HTTP响应头详解:
HTTP/1.1 200 OK ----状态行 Server: Microsoft-IIS/5.0 Date : 2016 00:00:00 Content-Langth: 2291 -----多个消息头 Content-Type: text/HTML Cache-control: private -----一个空行 <html> -----------------------实体内容 </html Location : 配合302使用,告诉用户找谁。 Server: 告诉浏览器服务器的类型。 Content-Encoding: 数据的压缩格式 Content-Length: 浏览器返回的数据长度 Content-Type: 浏览器返回的数据类型。 Expires: -1/0 则是不缓存。 Cache-Control:on-cache Pragma:on-cache 以上告诉浏览器不需要数据缓存。5. http:请求头字段。 Range(断点下载)头指示服务器只传输一部分web资源, : Range: bytes=1000-2000传输范围1000到2000 Range: bytes=1000- 第1000个字节后的所有内容 Range: bytes=1000 传输最后1000个字符。 import java.io.FileOutputStream; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; public class RangeTest { public static void main(String[] args) throws Exception { URL url=new URL("http:///index/admin.txt"); HttpURLConnection conn=(HttpURLConnection) url.openConnection();//打开资源。 conn.setRequestProperty("Range", "bytes=5-");//设置Range头 InputStream in=conn.getInputStream();//读取数据 int len=0; byte buffer[]=new byte[1024]; FileOutputStream out=new FileOutputStream("c:\\admin.txt", true);//true表示接着后面写。 while((len=in.read(buffer))>0){ out.write(buffer, 0, len); } in.close(); out.close(); } } HTTP响应头字段: Accept-Range: 服务器是否支持Range,支持返回 Accept-Range:bytes,不支持返回 Accept-Range:none Content-Range:指定字节范围: