Requests模块获取响应内容
响应包括响应行、响应头、响应正文内容,这些返回的响应信息都可以通过Requests模块获取。这些 获取到的响应内容也是接口测试执行得到的实际结果。
获取响应行
获取响应头
获取其它响应信息
代码示例:
# 导入requests模块 import requests r = requests.get("https://www.baidu.com") print(r.status_code) #响应状态码 print(r.reason) #响应信息 print(r.headers) #获取响应头 返回的是dict类型,可以继续使用get获取指定的值 # 获取其它响应信息: print(r.url) # 获取请求地址 print(r.cookies) #获取cookies print(r.encoding) #获取响应的编码格式
响应正文
依据不同响应正文内容的情况,Requests模块有四种不同的处理方式
一、普通文本数据
Requests 会自动解码来自服务器的内容。大多数 unicode 字符集都能被无缝地解码。请求发出后, Requests 会基于 HTTP 头部对响应的编码作出有根据的推测。当你访问 response.text 之时,Requests 会使用其 推测的文本编码。response.text使用后乱码的几率很大,可以先用response.encoding 属性来改变编码,如下所示:
代码示例:
# 1,普通文本数据 url = "http://www.hnxmxit.com/" response = requests.get(url=url) print(response.content.decode("utf-8"))
查看执行结果:
二、二进制数据
对于非文本请求,response.content能以字节的方式访问请求响应体。且Requests模块会自动为你解码 gzip 和 deflate 传输编码的响应数据
# 2,二进制数据 response =requests.get("https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=2073439784,2147418910&fm=26&gp=0.jpg") print(type(response.content)) # 输出二进制的图片数据类型 with open("E:/baidu.gif","wb") as f: # 将二进制数据写入到本地文件 f.write(response.content)
查看执行结果:
三、json数据
Requests 中有一个内置的 JSON 解码器 response.json(),处理返回的 JSON 数据。使用后,会把返回的数据 作为一个python中的json数据对象看待。如果 JSON 解码失败, response.json() 就会抛出一个异常。
url = 'https://api.weixin.qq.com/cgi-bin/token' data = {'grant_type':'client_credential', 'appid':'wxf14419077f707856', 'secret':'92a113bd4b5ffdc72144740dc7123c99'} response = requests.get(url=url,params=data) # 响应是str类型 ,所以我们需要将响应转换成json json_obj = response.json() token = json_obj['access_token'] print(token)
四、原始响应内容(一般不使用)
如果需要获取来自服务器的原始套接字响应,可以使用response.raw,如果确定要获取的话,还需要在初始请 求中设置stream=True。
# 4,原始响应内容(一般不使用) url = "https://www.baidu.com" response = requests.get(url=url,stream=True) print(response.raw.read(10))