Http协议中Get 和 Post的发送内容

遇到这个问题主要原因是在录入JMeter脚本时,原有的HttpSample无法达到请求RequestBody的目的,不得已查看了一些Http协议的简单介绍,最终通过Raw Http插件实现。

Http请求

#一行,描述请求方法、URL、htto协议等信息
<request-line>
#请求头信息
<headers>
<CRLF>

#request body。<headers>使用/r/n占用一行来标记结束
[<request-body><CRLF>]

几点重要备注:

  • request-line中的url一定是使用application/x-www-form-urlencoded编码的,这个与请求方法无关。
  • <headers>Content-Type指明了request body的编码方式。
  • <headers>Content-Length指明了request body的长度,该长度务必等于request-body真正的字符数。少于会导致request-body的确实,多于服务器会等待知道超时才返回已读取的数据(功能没影响,但效率显然差)。


Get请求

GET /hello/index.html HTTP/1.1 
#【↑】request line
#【↓】request headers
Accept: */*
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
Host: localhost:8000
#发送完关闭连接 or 等待
Connection: Keep-Alive
Cookie: JSESSIONID=BBBA54D519F7A320A54211F0107F5EA6

get请求是不存在request body的。

Post请求

#url的部分仍然是urlencoded
POST /hello/checkUser.html?opt=xxx HTTP/1.1
Referer: http://localhost:8000/hello/index.html
Accept: */*
Accept-Language: zh-cn
#纯文本的编码:不编码
Content-Type: text/plain
Accept-Encoding: gzip, deflate
Host: localhost:8000
Content-Length: 20
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: JSESSIONID=BBBA54D519F7A320A54211F0107F5EA6

#【↑】/r/n
#【↓】request body
12345678901234567890




郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。