Requests库
Requests库是用Python编写的,基于urllib,采用Apache2 Licensed开源协议的HTTP库;
相比与urllib库,Requests库更加方便,可节约大量工作,完全满足HTTP测试需求。
解决乱码问题
# 解决乱码问题:
# 导包
import requests
# 发送请求
response = requests.get("http://www.baidu.com")
# 查看响应
# 查看响应数据编码格式
print("原始的数据编码为:", response.encoding)
print("设置前响应数据:", response.text)
# 设置响应数据编码格式
response.encoding = "utf-8"
print("设置编码后数据编码为:", response.encoding)
print("设置好响应数据:", response.text)
print(response.text)
运行结果展示:
发送url参数
# 导包
import requests
# 发送请求
# 直接通过url传递参数
response = requests.get("http://localhost:8080/Home/Goods/search.html?q=iPhone")
# 通过params传递参数:
# (1)字符串
urlA = "http://localhost:8080/Home/Goods/search.html"
stringA = "q=iPhone"
response = requests.get(url=urlA,params=stringA)
# (2)字典
dictA = {
"q":"iPhone"
}
response = requests.get(url=urlA, params=dictA )
# 查看响应
print(response.text)
Post请求提交form表单数据
代码:
"""
1.请求TPshop项目的登录接口,
2.登录接口URL: http://localhost:8080/index.php?m=Home&c=User&a=do_login
"""
# 导包
import requests
# 发请求
login_url = "http://localhost:8080/index.php?m=Home&c=User&a=do_login"
login_data = {
"username":"17788888888",
"password":"17788888888",
"verify_code":"8888"
}
responce = requests.post(url=login_url, data=login_data)
# 看响应
print(responce.json())
运行结果:
为什么格式正确它显示验证码错误??
Post提交json数据
代码如下:
# 导包
import requests
# 发送请求
login_url = "http://ihrm-test.itheima.net/api/sys/login"
login_data = {
"mobile":"13800000002",
"password":"123456"
}
responce = requests.post(url=login_url, json=login_data)
# 查看响应
print(responce.json())
运行结果如下:
其他请求类型
如PUT、DELETE、HEAD以及OPTIONS
import requests
response = requests.put("http://www.baidu.com", data={"key":"value"})
response = requests.delete("http://www.baidu.com")
响应内容
response.status_code | 状态码 |
---|---|
response.url | 请求url |
response.encoding | 查看响应头部字符编码 |
response.headers | 头信息 |
response.cookies | cookie信息 |
response.text | 文本形式的响应内容 |
response.content | 字节形式的响应内容 |
response.json() | JSON形式的响应内容 |
代码如下:
import requests
# 访问百度首页的接口`http://www.baidu.com`,获取以下响应数据
response = requests.get("http://www.baidu.com")
# 获取响应状态码
print("响应状态码:", response.status_code)
# 获取请求URL
print("URL:", response.url)
# 获取响应字符编码
print("编码格式为:", response.encoding)
# 获取响应头数据
print("响应头信息:", response.headers)
print("Content-Type:",response.headers.get("Content-Type"))
# 获取响应的cookie数据
print("cookies:", response.cookies)
print("提取指定的cookie", response.cookies.get("BDORZ"))
# 获取文本形式的响应内容
print("文本形式显示响应内容:", response.text)
# 获取字节形式的响应内容
print("获取字节形式的响应内容:", response.content)
print("获取字节形式的响应内容:", response.content.decode("utf-8"))
运行结果:
设置请求头
"""
请求头: Content-Type: application/json
请求体:{"mobile":"13800000002","password":"123456"}
"""
import requests
login_url = "http://ihrm-test.itheima.net/api/sys/login"
login_header = {
"Content-Type":"application/json"
}
login_data ={
"mobile":"13800000002",
"password":"123456"
}
response = requests.post(url=login_url, json=login_data, headers=login_header)
# 查看响应
print(response.json())
运行结果如下:
Session
session对象代表一次用户会话:从客户端浏览器连接服务器开始,到客户端浏览器与服务器断开会话能让我们在跨请求时候保持某些参数,比如在同一个session实例发出的所有请求之间保持cookie
import requests
# 创建session对象
session = requests.Session()
response = session.get("http://localhost:8080/index.php?m=Home&c=User&a=verify")
# 登录
login_url = "http://localhost:8080/index.php?m=Home&c=User&a=do_login"
login_data = {
"username":"17788888888",
"password":"17788888888",
"verify_code":"8888"
}
response = session.post(url=login_url, data=login_data)
print(response.json())
# http://localhost:8080/Home/Order/order_list.html
response = session.get("http://localhost:8080/Home/Order/order_list.html")
print(response.text)
代码运行结果: