import json import requests # 创建一个HandleRequest类 class HandleRequest: """ 处理请求 """ # 创建一个构造方法,one_session自动保存会话信息 def __init__(self): self.one_session = requests.Session() def add_headers(self,headers): """添加公共请求头""" self.one_session.headers.update(headers) # 添加send方法,专门用来发起请求,定义封装的参数三种形默认式 # 默认请求方法:POST,默认参数格式:json格式 def send(self,url,method="post",data=None,is_json=True,**kwargs): # data = '{"name"="hc","gender":true}' # json格式的字符串 # data = "{"name"="hc","gender":True}" # 字典类型的字符串 # isinstance用来判断第一个字符串类型的,如果是,返回True,不是返回false if isinstance(data,str): try: # 对传递参数用json.loads进行格式转换,将JSON格式的参数转换为python中的字典格式或者嵌套字典的列表 data = json.loads(data) # 如果参数不是json格式的字符串,为字典格式执行以下代码 except Exception as e: print("使用日志器来记录日志") # 使用eval格式进行转换,保证两种格式的数据,都能进行转换 data = eval(data) # 将所有请求方法转换为小写 method = method.lower() if method == "get": # res = self.one_session.get(method,url,params=data,**kwargs) # params查询字符串参数 res = self.one_session.request(method,url,params=data,**kwargs) elif method in ("post","put","delete","patch"): # 有请求体 if is_json: # 如果is_json为True,那么以json格式的形式来传参 # res = self.one_session.post(url,json=data,**kwargs) res = self.one_session.request(method,url,json=data,**kwargs) else: # 如果is_json为False,那么以www-form的形式来传参 # res = self.one_session.post(url, data=data, **kwargs) res = self.one_session.request(method,url,data=data,**kwargs) else: res = None print("不支持【{}】请求方法".format(method)) return res def close(self): self.one_session.close() if __name__ == "__main__": # 1、构造请求的url:登录 login_url = "XXXXXXXXXXXXXXXX" # 2、充值 recharge_url = "XXXXXXXXXXXXXX" # 2、创建请求参数 headers = { "X-Lemonban-Media-Type": "XXXXXX", "User-Agent": "Moilla/5.0 leo" } login_params = { "mobile_phone": "13888888836", "pwd": "123456789" } # 3、执行登录 do_request = HandleRequest() # 创建HandRequest对象 do_request.add_headers(headers) # 添加公共请求头 # 通过对象发起请求,获取response响应报文 login_res = do_request.send(login_url,method="post",data=login_params,is_json=True) # 将response响应体的数据转换为字典,赋值给json_datas json_datas = login_res.json() # 取出响应报文的id值 member_id = json_datas["data"]["id"] # 取出响应报文中的token token = json_datas["data"]["token_info"]["token"] # 4、创建请求参数,body值 recharge_params = { "member_id": member_id, "amount":"50000", } # 字符串拼接需要传递的token参数 token_header = {"Authorization": "Bearer " + token} # 请求头中添加token do_request.add_headers(token_header) # 5、执行充值 recharge_res = do_request.send(recharge_url,data=recharge_params) pass
【python自动化框架搭建】requests模块封装和应用(第20天课堂笔记)
猜你喜欢
转载自www.cnblogs.com/python-test001/p/12537263.html
今日推荐
周排行