失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Python+Requests模拟发送post请求

Python+Requests模拟发送post请求

时间:2020-03-25 21:21:46

相关推荐

Python+Requests模拟发送post请求

模拟发送post请求

发送post请求的基础知识dumps和loads

代码示例:

# 发送post请求import requests,json# 发送post请求的基础知识dumps和loadsstr_dict ={'name':'xiaoming','age':'20','sex':'男'}print(type(str_dict))str1 = json.dumps(str_dict) # 1,json.dumps 是把字典、json对象转换为字符串print(type(str1))print(str1)str2 = '{"name":"tom","age":"22","sex":"男"}' # 注意 这里是字符串,里面必须用双引号str_json = json.loads(str2) # 2,json.loads 是将字符串转成字典,json对象print(type(str_json))print(str_json['name'],str_json.get('age'))

以微信开放平台举例

发送post请求

# 1,获取tokenurl = 'https://api./cgi-bin/token'data = {'grant_type':'client_credential','appid':'wxf14419077f707','secret':'92a113bd4b5ffdc72144740dc7123'}response = requests.get(url=url,params=data)# 响应是str类型 ,所以我们需要将响应转换成jsonjson_obj = response.json()token = json_obj['access_token']print(token)# 2,新建用户标签tag_url = 'https://api./cgi-bin/tags/create'tag_data = {'access_token':token}tag_json_body = {"tag":{"name" :"长沙01"} }headers = {"content-type":"application/json"} # 发送json 数据必须带有头部信息 content-type# post请求中body中的参数通过data,json 传递# 如果body中的数据为json格式,在发送时可以直接使用json=body值# response = requests.post(url=tag_url,params=tag_data,headers=headers,json=tag_json_body)# 如果body中的数据为json格式,在发送时使用data=json.dumps(body值)response = requests.post(url=tag_url,params=tag_data,headers=headers,data=json.dumps(tag_json_body))print(response.content.decode("utf-8"))

查看执行结果:

上传文件

import requests# 1,获取tokenurl = 'https://api./cgi-bin/token'data = {'grant_type':'client_credential','appid':'wxf14419077f707856','secret':'92a113bd4b5ffdc72144740dc7123c99'}response = requests.get(url=url,params=data)# 响应是str类型 ,所以我们需要将响应转换成jsonjson_obj = response.json()token = json_obj['access_token']print(token)# 上传文件wx_url = "https://api./cgi-bin/media/upload"wx_data = {"access_token":token,"type":"image"}file = {"files":open("E:/12345.png","rb")} # 注意:必须要用字典的方式openres = requests.post(url=wx_url,params=wx_data,files=file)print(res.content.decode("utf-8"))

查看执行结果

封装post请求

代码示例:

# 封装post方法def send_post(url,data,json_info):headers = {"content-type": "application/json"}response = requests.post(url=url,params=data,json=json_info,headers=headers)return responseprint(send_post(url=tag_url,data=tag_data,json_info=tag_json).content.decode("utf-8"))

封装main方法

代码示例:

# 封装main方法def run_main(method,url,data=None,json_info=None):response = Noneif method == "GET":response = send_get(url,data)elif method == "POST":response = send_post(url,data,json_info)else:print("参数错误")response = Nonereturn responseprint(run_main("GET","/").content.decode("utf-8"))

封装测试类

示例代码:

# 将写好的get、post、run_mian方法做成类import requestsclass run_test:session_obj = requests.session()def __init__(self,method,url,params=None,data=None,headers=None):self.method = methodself.url = urlself.params = paramsself.data = dataself.headers = headersdef send_get(self):res = run_test.session_obj.get(url=self.url,params=self.params,headers=self.headers)return resdef send_post(self):res = run_test.session_obj.post(url=self.url,params=self.params,data=self.data,headers=self.headers)return resdef run_main(self):if self.method == "GET":res = self.send_get()elif self.method == "POST":res = self.send_post()else:print("请求方式错误,请检查!")res = Nonereturn resif __name__ == "__main__":method = "GET"url = ""headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36"}test_obj = run_test(method=method,url=url,headers=headers)response = test_obj.run_main()print(response.content.decode("utf-8"))

实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

如果对你有帮助的话,点个赞收个藏,给作者一个鼓励。也方便你下次能够快速查找。

如有不懂还要咨询下方小卡片,博主也希望和志同道合的测试人员一起学习进步

在适当的年龄,选择适当的岗位,尽量去发挥好自己的优势。

我的自动化测试开发之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,

测试开发视频教程、学习笔记领取传送门!!!

如果觉得《Python+Requests模拟发送post请求》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。