Requests库是用python编写的,基于urlib,采用Apache2 Licensed开源协议的HTTP库,相比urlib库,Requests库更加方便,可以节约我们大量的工作,完全满足HTTP测试需求。
pip install requests
常见的HTTP请求方式:GET、POST、PUT、DELETE、HEAD、OPTIONS
import requests
response = requests.get("https://www.baidu.com")
请求方法的返回值response为Response对象,我们可以从这个对象中获取所有我们想要的响应信息。
响应对象.url # 获取请求url
响应对象.status_code #获取响应状态码
响应对象.text # 以文本形式显示相应内容
r = requests.get("https://www.baidu.com")
print('请求地址:', r.url)
print('请求状态码', r.status_code)
print('请求内容',r.text)
# 单个键值对
if __name__ == '__main__':
param = {
"id": 1001
}
# params参数:可以是字典或者字符串,推荐字典
r = requests.get("https://www.baidu.com", params=param)
print('请求地址:', r.url)
print('响应状态码', r.status_code)
print('响应内容',r.text)
# 多个键值对
if __name__ == '__main__':
param = {
"id": 1001,
"kw": "北京"
}
# params参数:可以是字典或者字符串,推荐字典
r = requests.get("https://www.baidu.com", params=param)
print('请求地址:', r.url)
print('响应状态码', r.status_code)
print('响应内容',r.text)
response = requests.post(url, data=None,json=None)
param url:请求的URL
param data:(可选) 要发送到请求体中的字典、元组、字节或文件对象
param json:(可选)要发送到请求体中的JSON数据
rtype: request,Response
if __name__ == '__main__':
headers = {"Content-Type": "application/json"}
data = {
"username": "admin",
"password": "123456"
}
url = "http://localhost:8001/employee/login"
# post的参数必须指定headers字典包含{"Content-Type": "application/json"}
# json参数为字典类型,key和value为字符串时,使用双引号,否则无法解析
r = requests.post(url, json=data,headers=headers)
print('请求地址:', r.url)
print('应答状态码', r.status_code)
print('应答内容', r.json())
json=data 等价于 data=json.dumps(data) # 转换成json字符串
data:字典对象
json:json字符串
response.text 返回结果类型是字符串
response.json() 返回结果类型是dict,可以通过字典的方法获取你想要的值
请求方法的返回值response为Response对象,我们可以从这个对象中获取所有我们想要的响应信息。
response.status_code 状态码
response.url 请求url
response.encoding 查看响应头部字符编码
response.headers 头信息
response.cookies cookie信息:获取响应cookies信息(服务器产生)
response.text 文本形式的响应内容
response.content 字节形式的响应内容,如图片
response.json() json形式的响应内容
JSON响应内容
如果请求响应的内容为JSON格式的数据,则可以直接调用response.json()方法获取数据,因为requests中内置了JSON解码器,帮助我们处理json数据。
if __name__ == '__main__':
url = "https://www.baidu.com"
r = requests.get(url)
print('请求地址:', r.url)
print('应答状态码', r.status_code)
print('应答内容', r.text)
print('应答编码:', r.encoding)
# r.encoding = "utf-8" 可以设置编码
r.encoding = "utf-8"
print('应答内容', r.text)
print('应答编码:', r.encoding)
print('应答头信息:', r.headers)
print('应答cookies', r.cookies)