Http协议中Get 和 Post的发送内容
博客专区 > gangzz 的博客 > 博客详情
Http协议中Get 和 Post的发送内容
gangzz 发表于3年前
Http协议中Get 和 Post的发送内容
  • 发表于 3年前
  • 阅读 2646
  • 收藏 10
  • 点赞 1
  • 评论 1

华为云·免费上云实践>>>   

摘要: 起源于使用JMeter做Rest压测,无法实现RequestBody的请求。讨论Http协议中Get和Post的请求发送内容,以及最终如何实现Rest的RequestBody请求。

遇到这个问题主要原因是在录入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




共有 人打赏支持
gangzz
粉丝 55
博文 30
码字总数 64135
评论 (1)
×
gangzz
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: