HTTP协议的请求主要由三部分组成:请求行、请求报文和请求体。其中某些请求报文和请求体的内容是可选的,请求报文和请求体之间需要用空行隔开。
1、请求行
请求行只包含三个内容:方法(Method)、请求资源的URI(Request-URI1)和HTTP版本(HTTP-Version),其格式可以表示为:
Method Request-URI HTTP-Version CRLF
其中,CRLF表示回车或换行。
所谓的''方法''可以理解为操作或命令。HTTP 1.1 中规定请求方法可以在以下14中方法中选择:
2、请求报头
请求报头包含客户端传递请求的附加信息以及客户端的自身信息。常用的请求报头由Accept和User-Agent。Accept用于指定客户端所接受的信息类型,常有多个Accept行,例如:
Accept:text/html
Accept:image/gif
表名客户端可接收图像和HTML文件或文本文件。
User-Agent用于将发送请求的客户端信息,如客户端的操作系统名称和版本信息、浏览器的名称和版本信息等告知服务器。
其他常用的请求报头说明如下:
HTTP请求举例:
GET /index.html HTTP/1.1
Accept:text/plain /*纯ASCII码文本文件*/
Accept:text/html /*HTML文本文件*/
User-Agent:Mozilla/4.5(WinNT) /*指定用户代理*/
/*空行*/
对HTTP请求代码说明如下:
需要注意的是,使用GET方法的HTTP请求中的不能包含实体内容,而是用POST、PUT和DELETE方法的HTTP请求中可以包含实体内容。
可以使用简化的HTTP请求和HTTP响应,此时它们都不包含消息头。
3、GET方法与POST方法
已经看到,HTTP协议中包含了多种方法,但最常用的事GET和POST方法。注意使用GET方法和POST方法传递参数时的不同。
GET方法是最简单的HTTP方法,它的主要任务就是像服务器请求一个资源并把资源发送回来。这个资源可以是一个HTML页面,也可以是一个JPEG图像,还可以是一个PDF文档等等。GET方法的关键就是要从服务器获得一些资源。
POST方法不仅可以向服务器请求某个资源,同时还可以向服务器发送一些表单数据。
使用GET方法时在URL地址后面常常可以附加一些参数,下面是一个使用GET方法的请求行:
GET http://www.java123.org/servlet?param1=abc¶m2=del HTTP/1.1
对GET方法说明如下:
使用POST方法发送数据的示例如下:
POST /index.html HTTP/1.1 /*请求行*/
HOST:www.javait.com /*存放所有请求对象的主机*/
User-Agent:Mozilla/4.5(WinNT) /*指定用户代理*/ Accept:text/html /*HTML文本文件*/ Accept-Language:zh-cn /*指定可接受的语言*/ Content-Length:22 Connection:keep-alive param1=abc¶m2=def /*提交的参数*/
上面的POST方法将参数放到消息体中,因此不再向GET方法一样受到地址栏中文本太长的限制,而且这些参数不会直接显示在地址栏上。
使用GET方法传递参数时其数据量是有限的,一般不超过1KB。而是用POST方法其传递的数据量是没有限制的,但是需要将请求报头Content-Type设置为Application/x-www-form-urlencoded,将Content-Length设置为实体内容的长度。