[TOC]
<br>
### HTTP 协议介绍
HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是一个属于`应用层`的面向对象的传输协议。
HTTP协议工作于客户端-服务端架构为上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。WEB服务器根据接收到的请求后,向客户端发送响应信息。
总结:HTTP消息是一种特别常用的客户端与服务器之间交换数据的方式
![](https://box.kancloud.cn/554ec3f18ad5512219b8a48f19578b53_592x195.jpg)
**特点:**
- 无连接:限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接
- 无状态:每个请求都是独立的,不会自动记忆状态。聪明的人们,为了解决对话能保持状态,使用了session与cookie来解决。
### HTTP 请求的组成
如果学习过Fiddler的朋友,可以抓一下前面一节中的简单GET与POST请求,在Inspector的raw窗口下,可以看到如下信息:
GET请求中,body内容为空,参数主要放在url中。
![](https://box.kancloud.cn/cc6a198a881aa22438a2d802d8598a76_1263x304.jpg)
POST请求中,参数一般放在body中。
![](https://box.kancloud.cn/5ec6c4fd39a4d8d291f52fc7e43fca22_974x416.jpg)
通过上面两个请求,我们可以总结出,HTTP请求,主要有三部分组成
- 起始行:包含请求方法,请求地址
- 请求头headers:格式如key:value,主要用于传递客户端的特定配置信息
- 请求体body: post方法存储参数的位置
### Postman 发起一个API请求
创建一个请求,主要配置四部分
1.请求方法method;2.请求地址URL;3.请求头headers;4.请求体body
对应在Postman中的设置位置如
![](https://box.kancloud.cn/928bd9924586ba401c905e819866408f_607x341.jpg)
#### Method
在HTTP中的method有GET、HEAD、POST、PUT、DELETE、CONNECT、OPTIONS、TRACE,其中最常用的只有`GET`与`POST`
#### URL
点击按钮“Params”会展开参数编辑窗口,在窗口中填入的参数键值对,会自动拼接到URL参数中。直接写在URL中的参数,也会自动以键值对的形式显示在编辑窗口
#### Headers
HTTP通用的headers有一下内容:
![](https://box.kancloud.cn/b11bfa9ad10764a5a68ef307cb15ecc6_749x2013.jpg)
当然,我们可以添加任意名称的headers,在Postman中,不管是headers的key或者value,输入部分字符后都有“自动联想”提示,非常的好用!
#### Cookies
在Native APP中,提供了Cookie管理器。
![](https://box.kancloud.cn/8793febe7932a6bf4e7fec50d9657bb9_598x260.jpg)
>[info] 在客户端,发送请求时附带上cookie,一般用于**保持用户状态**。但是关键的cookie可不是客户端生成哦,而是服务端创建的。服务端会先创建一个会话Session,将SessionID作为cookie设置到客户端,在之后的一系列请求中只要带上SessionID,服务端则会认为这是同一个用户在访问了。
在cookie的使用中,有一个非常重要的规则,就是`Cookie不能跨域访问`。例如在B网站中不能使用访问A网站时生成的cookie。因此,在设置cookie时,需要先指定域名,然后设置cookie内容。
![](https://box.kancloud.cn/e34e3af8cf28611561ce5afb38953bde_698x228.jpg)
#### Body
在POST方法中,参数通常会设置在Body中。
*注意:参数值不会自动进行`URL-encoded`,如果想要某参数值URL-encoded,可以选择参数值字符串,右键选择“EncodeURIcomponent”即可*
在Body参数的格式上,有四种:“form-data”,“urlencoded”,“raw”,“binary”
当我们通过HTTP协议发送请求时,headers中携带的Content-Type会告诉服务器所传参数的类型,以便于服务器能正确解析请求参数。
![](https://box.kancloud.cn/cef3812df1bb123b1117a7d04d5d5d6a_607x272.jpg)
**“form-data"类型**,相当于"content-type": "multipart/form-data”
Form-data是默认的web表单数据传输的编码类型,这模拟了在网站上填写`表单`,并提交它。`既可以上传键值对,也可以上传文件`。
**“x-www-form-urlencoded”类型**,相当于"content-type": "application/x-www-form-urlencoded"
`只能上传键值对`,会将`表单`内的数据转换为键值对,并且自动对参数值进行`urlencode编码`。
![](https://box.kancloud.cn/8e821bfa9cf0d9913456d25891a99059_594x204.jpg)
**“raw”类型**,对应"content-type"可以是“text/plain”,"application/json","text/xml",或"text/html"
可以上传`任意格式的文本`,可以上传text、json、xml、html等
![](https://box.kancloud.cn/5c120b7202cd693f1c094ae0bd549a4a_607x219.jpg)
**“binary”类型**,相当于“Content-Type”:“application/octet-stream”
只可以上传`二进制数据`,通常用来上传文件
### HTTP 响应的组成
![](https://box.kancloud.cn/c8e3369bb7561e29f4fde9249f526ead_1259x252.jpg)
HTTP响应也主要有三部分组成
- 状态行
- 响应头headers
- 响应体body
对应Postman中的显示区域如:
![](https://box.kancloud.cn/87bf790dc9ac36042659394f0ee94da7_1091x467.jpg)
HTTP通用的响应headers有
![](https://box.kancloud.cn/aefd4e73910afecd2930c09711b1a9ff_751x2403.jpg)
### 课后学习要求
好好百度下HTTP协议。关键是要了解HTTP协议的特点、HTTP headers中各个配置的含义、HTTP的各种响应码的含义。
<hr style="margin-top:100px">
:-: ![](https://box.kancloud.cn/331f659e8e6cddb0d9f182e00e32803f_258x258.jpg)
***微信扫一扫,关注“python测试开发圈”,获取更多测试开发分享!***
- 前言
- Fiddler01-抓包原理介绍与配置
- Fiddler02-菜单功能介绍
- Fiddler03-轻松玩转Fiddler
- Fiddler04-进阶使用FiddlerScript
- Fiddler05-使用FiddlerScript对微信文章互动量进行监控
- Postman01-介绍与安装
- Postman02-HTTP请求与响应
- Postman03-Collection管理与运行
- Postman04 -变量详解
- Postman05-初级脚本使用
- Postman06-实例小结篇
- JMeter01-JMeter就是这么简单
- JMeter02-一个完整实战包你学会使用JMeter
- JMeter03-在JMeter中使用BeanShell编程
- JMeter04-图形化和非图形化运行JMeter
- JMeter05-生成美观的HTML测试报告
- JMeter06-JMeter+Jenkins实战
- JMeter07-解析session与cookie