1
post请求参数
1.POST 请求
我们在浏览器地址栏上直接输入网址访问资源,这种请求方式是 GET 请求,超链接请 求也属于 GET 请求,下面我们要演示的是 POST 请求:
(1) 创建一个 web 应用,名称为 Example04,并在该应用中的 WebRoot 目录下新建一
个 form.html 文件。详情请见 Post 请求案例详解。点击此处 Eample04.zip 下载 Examplie04。主要 代码如例 1-1 所示:
(2) 将 Example04 发布到 Tomcat 中,启动 Tomcat 服务器。在浏览器端地址栏上输入 http://localhost:8080/Example04/form.html,并使用 HttpWatch 进行抓包,如图 1-1 所示:
填写用户名:zhangsan 点击提交 填写密码:123 点击提交之前,先点击 Clear 选项,清理一下
图 1-1 访问 form.html
2
(3) 如图 1-1 所示,在用户名文本框中输入:zhangsan,密码文本框中输入:123。然
后选中【Clear】选项,再点击【提交】按钮,结果如图 1-2 所示: index.jsp 提交之后,访问
(4)如图 1-2 所示,我们通过 HttpWatch 成功的抓取到 form 表单提交之后的请求信息, 具体内容如例 1-2 所示:
POST /Example04/index.jsp HTTP/1.1 Accept:
image/jpeg,
application/x-ms-application, image/gif, 例 1-2 post 方式请求信息 application/x-ms-xbap,
application/xaml+xml, image/pjpeg, application/x-shockwave-flash, application/msword, application/vnd.ms-powerpoint, application/vnd.ms-excel, */*
Referer: http://localhost:8080/Example04/form.html Accept-Language: en-US,zh-CN;q=0.5
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; qdesk 2.4.1265.203; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; InfoPath.3)
Content-Type: application/x-www-form-urlencoded Accept-Encoding: gzip, deflate Host:
localhost:8080 30 Content-Length:
Connection: Keep-Alive
username=zhangsan&password=123
(5) 现 在 我 们 再 抓 取 一 段 GET 方 式 请 求 信 息 , 在 浏 览 器 地 址 栏 上 输 入 : http://localhost:8080/Example04?username=zhangsan&password=123,如图 1-3 所示:
3
图 1-3 get 请求
GET /Example04?username=zhangsan&password=123 HTTP/1.1
application/x-ms-application, image/gif, application/x-ms-xbap,
application/xaml+xml, image/pjpeg, application/x-shockwave-flash, application/msword, application/vnd.ms-powerpoint, application/vnd.ms-excel, */*
(6)图 1-3 所示中的请求信息,如例 1-3 所示:
image/jpeg,
Accept:
例 1-3 get 方式请求信息
Accept-Language: en-US,zh-CN;q=0.5
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; qdesk 2.4.1265.203; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; InfoPath.3)
Accept-Encoding: gzip, deflate Host:
localhost:8080 Connection: Keep-Alive
将例 1-2 post 方式请求信息与例 1-3 get 方式请求信息进行比较,有以下两点区别: 请求首行区别:请求参数的位置不同 以上两种请求方式都是带参数的请求,POST 请求首行是:POST /Example04/index.jsp
HTTP/1.1,GET 请求首行为: GET /Example04?username=zhangsan&password=123 HTTP/1.1, 其中 GET 请求首行中,”?”后面的是请求参数,多个请求参数之间用”&”连接。可以看出,POST 请求的请求参数并不在请求首行中。
GET 请求没有请求体,POST 请求有请求体
从例 1-3 中可以看出,GET 请求没有请求体。从例 1-2 可以看出,POST 请求有请求体, 而
且请求体的内容是从 form.html 页面提交过来的参数。这些参数的格式:参数名=参数值& 参数名=参数值&…,get 请求没有请求体,它的请求参数附加在请求首行的 url 后面。