Python+Requests模拟发送post请求

模拟发送post请求

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

代码示例:

# 发送post请求
import requests,json
# 发送post请求的基础知识dumps和loads
str_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,获取token
url = 'https://api.weixin.qq.com/cgi-bin/token'
data = {'grant_type':'client_credential',
        'appid':'wxf14419077f707',
        'secret':'92a113bd4b5ffdc72144740dc7123'}
response = requests.get(url=url,params=data)
# 响应是str类型 ,所以我们需要将响应转换成json
json_obj = response.json()
token = json_obj['access_token']
print(token)
# 2,新建用户标签
tag_url = 'https://api.weixin.qq.com/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,获取token
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)

# 上传文件
wx_url = "https://api.weixin.qq.com/cgi-bin/media/upload"
wx_data = {"access_token":token,"type":"image"}
file = {"files":open("E:/12345.png","rb")}  # 注意:必须要用字典的方式open
res = 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 response

print(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 = None
    if method == "GET":
        response = send_get(url,data)
    elif method == "POST":
        response = send_post(url,data,json_info)
    else:
        print("参数错误")
        response = None
    return response

print(run_main("GET","https://www.jd.com/").content.decode("utf-8"))
封装测试类

示例代码:

# 将写好的get、post、run_mian方法做成类
import requests
class run_test:
    session_obj = requests.session()
    def __init__(self,method,url,params=None,data=None,headers=None):
        self.method = method
        self.url = url
        self.params = params
        self.data = data
        self.headers = headers

    def send_get(self):
        res = run_test.session_obj.get(url=self.url,params=self.params,headers=self.headers)
        return res
    def send_post(self):
        res = run_test.session_obj.post(url=self.url,params=self.params,
                                        data=self.data,headers=self.headers)
        return res

    def run_main(self):
        if self.method == "GET":
            res = self.send_get()
        elif self.method == "POST":
            res = self.send_post()
        else:
            print("请求方式错误,请检查!")
            res = None
        return res


if __name__ == "__main__":
    method = "GET"
    url = "https://www.jd.com"
    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"))

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/208110.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

windows判断端口是否在使用的bat脚本

脚本 REM 查询端口是否占用 netstat -ano|findstr 3306 >nul &&echo y >1.log ||echo n >1.log REM 读取文本内容赋值给变量 set /P resu<1.log if %resu% y (echo port in use ) else (echo port not in use ) mysql服务不运行的时候检测效果 mysql服…

【Excel】WPS快速按某列查重数据

查重值 excel列几条数据肉眼可见&#xff0c;如何千万级别数据查验呢&#xff1f;平时很少用&#xff0c;记录一下: 先框选列要验证的数据&#xff0c;然后&#xff1a;开始->条件格式->突出显示单元格规则->重复值 效果

成都理工大学校园《我想假如在这里度过大学生活》火了

近日&#xff0c;网上一篇关于成都理工大学校园环境的《我想假如在这里度过大学生活》火了。文章中的提到的大学环境优美&#xff0c;诗意盎然。一则则假如&#xff0c;带我们领略了校园风光&#xff0c;同时也感受到了大学时代的美好。 美丽的图书馆、阳光明媚的操场&#xff…

HNU-计算机网络-讨论课2

第二次 有关网络智能、安全以及未来网络的讨论 一、必选问题&#xff08;每组自由选择N个&#xff0c;保证组内每人负责1个&#xff09; 网络的发展促进信息的传播&#xff0c;极大提高了人类的感知能力&#xff0c;整个世界都被纳入人类的感知范围。但人们对信息系统以及数据…

Jenkins UI 自动化持续化集成测试

一&#xff1a;安装jenkins 环境 在官网下载msi 直接安装即可 二&#xff1a;设置全局变量 设置allure 路径 三&#xff1a;创建项目 1、创建自由风格项目 2、如果项目在本地&#xff0c;且本地服务器是windows &#xff0c;找到Jenkins安装根目录&#xff0c;寻找config…

Serilog .net下的新兴的日志框架

Serilog .net下的新兴的日志框架 1.Serilog简介 Serilog 是针对 .NET 应用程序的流行日志记录框架。它以其灵活性、易用性和可扩展性而闻名。借助 Serilog&#xff0c;开发人员可以轻松记录应用程序中的事件、错误和消息。它支持结构化日志记录&#xff0c;能够以结构化格式存…

B.牛牛排队伍——模拟双链表

当前位置: 首页 > news >正文 B.牛牛排队伍——模拟双链表 news 2023/12/1 15:14:37 分析 题目其实很简单,就是双链表的增删查,但是刚开始,直接vis标记删除元素,查找一个位置的前一个用的while不断向前找,但是TLE;毕竟O(n*k)的复杂度,一开始没有考虑时间复杂度…

【spring】bean的后处理器

目录 一、作用二、常见的bean后处理器2.1 AutowiredAnnotationBeanPostProcessor2.1.1 说明2.1.2 代码示例2.1.3 截图示例 2.2 CommonAnnotationBeanPostProcessor2.2.1 说明2.2.2 代码示例2.2.3 截图示例 2.3 ConfigurationPropertiesBindingPostProcessor2.3.1 说明2.3.2 代码…

uniapp uni-popup组件在微信小程序中滚动穿透问题

起因 在微信小程序中使用uni-popup组件时&#xff0c;出现滚动穿透&#xff0c;并且uni-popup内部内容不会滚动问题。 解决 滚动穿透 查阅官方文档&#xff0c;发现滚动穿透是由于平台差异性造成的&#xff0c;具体解决可以参照文档禁止滚动穿透 <template><page-…

【动手学深度学习】(七)丢弃法

文章目录 一、理论知识二、代码实现2.1从零开始实现Dropout 【相关总结】np.random.uniform(low&#xff0c;high&#xff0c;size)astypetorch.rand() 一、理论知识 1.动机 一个好的模型需要对输入数据的扰动鲁棒 使用有噪音的数据等价于Tikhonov正则丢弃法&#xff1a;在层…

PVE系列-LVM安装MacOS的各个版本

PVE系列-LVM安装MacOS的各个版本 环境配置大概过程&#xff1a;详细步骤&#xff1a;1.建立安装环境和下载安装工具2. 重启后&#xff0c;执行osx-setup配置虚拟机3. 安装到硬盘&#xff0c;4.设定引导盘&#xff0c;以方便自动开机启动5.打开屏幕共享和系统VNC最后的结果 引子…

软件工程 - 第8章 面向对象建模 - 2 静态建模

静态建模&#xff08;类和对象建模&#xff09; 类和对象模型的基本模型元素有类、对象以及它们之间的关系。系统中的类和对象模型描述了系统的静态结构&#xff0c;在UML中用类图和对象图来表示。 类图由系统中使用的类以及它们之间的关系组成。类之间的关系有关联、依赖、泛…

基于A*的网格地图最短路径问题求解

基于A*的网格地图最短路径问题求解 一、A*算法介绍、原理及步骤二、Dijkstra算法和A*的区别三、A*算法应用场景四、启发函数五、距离六、基于A*的网格地图最短路径问题求解实例分析完整代码 七、A*算法的改进思路 一、A*算法介绍、原理及步骤 A*搜索算法&#xff08;A star al…

Python 批量修改文件名

主要步骤 通过os.listdir查看该文件夹下所有的文件&#xff08;包括文件夹&#xff09;遍历所有文件&#xff0c;如果是文件夹则跳过&#xff0c;或指定跳过指定文件获取文件扩展名按照需求生成新的文件路径文件名进行重命名 代码示例 # -*- coding: utf-8 -*- import osdef…

二 使用GPIO的复用功能 利用USART 实现printf()

参考这篇&#xff1a; STM32串口通信详解 1. 关于USART USART ( universal synchronous / asynchronous receiver /transmitter) 是一种串行通讯协议 , 允许设备通过串行端口进行数据传输&#xff0c; USART 能够以同步或者异步的方式进行工作&#xff0c;在实际的运用中&…

局域网协议:以太网(Ethernet)详解

文章目录 Ethernet的组成以太网和 Wi-Fi以太网应用场景以太网的发展历程以太网数据链路层CSMA/CD (载波侦听多路访问/冲突检测)推荐阅读 以太网&#xff08;Ethernet&#xff09;是一种局域网&#xff08;LAN&#xff09;技术&#xff0c;用于在局域网范围内传输数据。它是最常…

算法与电子信息的来看看,打开你们的选题思路

算法和电子信息工程是两个非常广泛的领域&#xff0c;他们互相促进和补充。算法是指一系列用于解决特定问题的计算方法&#xff0c;其应用范围涵盖计算机科学、数学、物理等领域。而电子信息工程是一门研究用电子学、计算机技术和通讯技术等手段收集、传输、分析信息的学科。 在…

校招笔试-Windows开发工程师客观题合集解析

360公司-2019校招笔试-Windows开发工程师客观题合集 API无法实现进程间数据的相互传递是PostMessage 2.以下代码执行后&#xff0c;it的数据为&#xff08;异常&#xff09; std::list<int> temp; std::list<int>::iterator it temp.begin(); it --it; 3.API…

P4 链表的节点数统计与链表数据查找替换

目录 前言 01 链表的节点数统计 02 链表数据查找替换 2.1 残疾的数据查找 2.2 数据查找优化 前言 &#x1f3ac; 个人主页&#xff1a;ChenPi &#x1f43b;推荐专栏1: 《C 》✨✨✨ &#x1f525; 推荐专栏2: 《 Linux C应用编程&#xff08;概念类&#xff09;》✨…

格雷希尔C9M对接模块的插针/插孔与低电流信号线的安装流程详解

格雷希尔C9M自动对接模块是专门为汽车行业托盘式生产设计服务的&#xff0c;客户在将它们购买回去时需要自己安装插针和插孔&#xff0c;下面给大家讲解一下整个插针/插孔与低电流信号线的接线安装全流程。 首先&#xff1a;我们需要提前准备好(如上图所示)&#xff1a;剥线钳或…