Python接口自动化 —— 发送post请求的接口(详解)

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

简介

  上篇介绍完发送get请求的接口,大家必然联想到发送post请求的接口也不会太难,被聪明的你又猜到了。答案是对的,虽然发送post请求的参考例子很简单,但是实际遇到的情况却是很复杂的,因为所有系统或者软件、网站都是从登录开

始的,进入这扇门才可以发现里边的奥秘,所以首先介绍的第一个post请求肯定是登录了,但登录是最难处理的。如果把登录问题这只拦路虎解决了,那么后面问题都迎刃而解。

help函数

  上篇介绍发送get请求的接口时,学习requests模块,是让大家去访问官方网站,查看官方文档;其实学习一个新的模块捷径,不用去百度什么的,直接用 help 函数就能查看相关注释和案例内容。

python发送get请求接口案例:

python发送post请求接口案例:

 

 发送post请求的接口(dict参数)

   上一篇,我们就见识过requests的强大功能和威力。寥寥几行代码就可以实现get和post的请求。介绍到这里想必大伙都迫不及待了,好,那我们来牛刀小试一下。

1、用上面给的python发送post请求接口案例,稍稍地做个简单修改,就可以发个简单的post 请求

2、便可以像官方文档给出的案例将payload 参数是字典类型(dict),传到如下图的 form 里

 发送post请求的接口(json参数)

1、post 的 body 是 json 类型,也可以用 json 参数传入。

2、先导入 json 模块,用 dumps 方法转化成 json 格式。

3、返回结果,传到 data 里

 请求头header

  现在由于对接口安全性的要求,使得模拟登录越来越复杂,比上边介绍的基本内容要复杂很多。一般来说登陆只要涉及安全性方面考虑,那么登陆就会比较复杂。

1、以博客园为例,几年前模拟登陆,没有涉及安全性考虑相对简单。发展到现在其登录涉及安全性考虑,所以实际的情况要比上面讲的几个复杂很多,

2、我们在请求数据时也可以加上自定义的headers(通过headers关键字参数传递)有时候有的特殊的请求必须加上headers头信息,才回返回响应结果。例如:博客园登录时,将请求头 headers添加上,这里不是说博客园登录必须登录才能返回

响应结果,而是以其为例子来说明将请求头header参数加入到登录请求接口中。这里可以用抓包工具来看其登录时的请求头。如下是fiddler工具抓包时登录的请求头。

 3、由于博客园的登录方式改变了,我们换一个例子演示。还是以官方文档给的网址演示如下

  (1)抓包,查看其请求头,浏览器F12查看

Fiddler抓包查看请求头,结果如下:

  实例代码和其结果:

遇到问题报错和解决办法:

raise SSLError(e, request=request)
requests.exceptions.SSLError: HTTPSConnectionPool(host='httpbin.org', port=443): Max retries exceeded with url: /post (Caused by SSLError(SSLError("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')])")))

 小结

1、由于这里是 https 请求,直接发送请求会报错误:SSLError: HTTPSConnectionPool(host='httpbin.org', port=443): Max retries exceeded with url: /post (Caused by SSLError(SSLError("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')])")))

2、可以加个参数:verify=False,表示忽略对 SSL 证书的验证,但是此时仍然会有警告:

InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
InsecureRequestWarning)

3、这里请求参数 payload 是 json 格式的,用 json 参数传。将请求头写成字典格式,进行传参。

4、最后结果是 json 格式,可以直接用 r.json 返回 json 数据:

{'args': {}, 'data': '', 'files': {}, 'form': {}, 'headers': {'Accept': '*/*', 'Accept-Encoding': 'gzip, deflate', 'Content-Length': '0', 'Host': 'httpbin.org', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko'}, 'json': None, 'origin': '222.128.10.95, 222.128.10.95', 'url': 'https://httpbin.org/post'}

5、json参数和dict的参数非常类似,都是key-value的形式,它们有何区别,欲知后事如何,且听下回分解。

最后感谢每一个认真阅读我文章的人!作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,坚持几天便放弃的感受的话,在这里我给大家分享一些软件测试的学习资源,这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,希望能给你前进的路上带来帮助。如果你用得到的话可以直接拿走:

软件测试资料领取:[内部资源] 想拿年薪40W+的软件测试人员,这份资料必须领取~

软件测试面试刷题工具领取:软件测试面试刷题【800道面试题+答案免费刷】

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

Python发送Post请求及解析响应结果 阅读详情

相关推荐

python post body

url(r'^test555/$', newview.test555), def test555(req): query_param = request.query_params print query_param import requests res = requests.post("http://192.168.137.3:9000/test555?a='111'&b='222'/", data={'a':3, 'b':4}) print(res.text) d..

zhaoyangjian724的专栏 1260

python post请求

post请求的4种编码方式。

dair6的博客 1万+

Python发送POST请求的方法

Python中,我们可以使用多种方法发送HTTP请求,其中包括发送POST请求。需要注意的是,如果需要在POST请求中添加请求头、设置超时时间或者进行其他高级操作,可以通过requests库提供的其他参数和方法来完成。为了发送POST请求,我们可以使用Python的requests库。在上面的示例中,我们发送了一个包含两个键值对的POST请求,并打印了服务器返回的状态码、响应头和响应内容。在上面的示例中,我们指定了要发送POST请求的URL为。安装完成后,我们可以开始编写发送POST请求的代码。

CyberLynxX的博客 1022

Python接口自动化测试详解post请求

在HTTP协议中,与get请求请求参数直接放在url中不同,post请求请求数据需通过消息主体(request body)中传递。 且协议中并没有规定post请求请求数据必须使用什么样的编码方式,所以其请求数据可以有不同的编码方式,服务端通过请求头中的 Content-Type 字段来获知请求中的消息主体是何种编码方式,再以对应方式对消息主体进行解析。

weixin_67553250的博客 1万+

python接口post请求_python接口自动化(八)--发送post请求接口详解

简介上篇介绍完发送get请求接口,大家必然联想到发送post请求接口也不会太难,被聪明的你又猜到了。答案是对的,虽然发送post请求的参考例子很简单,但是实际遇到的情况却是很复杂的,因为所有系统或者软件、网站都是从登录开始的,进入这扇门才可以发现里边的奥秘,所以首先介绍的第一个post请求肯定是登录了,但登录是最难处理的。如果把登录问题这只拦路虎解决了,那么后面问题都迎刃而解。help函数上篇...

weixin_39918588的博客 1275

python发送post请求_python接口自动化2-发送post请求详解(二)

前言发送post请求参考例子很简单,实际遇到的情况却是很复杂的,首先第一个post请求肯定是登录了,但登录是最难处理的。登录问题解决了,后面都简单了。一、查看官方文档1.学习一个新的模块,其实不用去百度什么的,直接用help函数就能查看相关注释和案例内容。>>import requests>>help(requests)2.查看python发送get和post请求的案例&...

weixin_39804641的博客 292

ajax发送post请求_python接口自动化(八)--发送post请求接口详解

简介  上篇介绍完发送get请求接口,大家必然联想到发送post请求接口也不会太难,被聪明的你又猜到了。答案是对的,虽然发送post请求的参考例子很简单,但是实际遇到的情况却是很复杂的,因为所有系统或者软件、网站都是从登录开始的,进入这扇门才可以发现里边的奥秘,所以首先介绍的第一个post请求肯定是登录了,但登录是最难处理的。如果把登录问题这只拦路虎解决了,那么后面问题都迎刃而解。help函数...

weixin_39946355的博客 427

python接口自动化(八)--发送post请求接口详解

上篇介绍完发送get请求接口,大家必然联想到发送post请求接口也不会太难,被聪明的你又猜到了。答案是对的,虽然发送post请求的参考例子很简单,但是实际遇到的情况却是很复杂的,因为所有系统或者软件、网站都是从登录开始的,进入这扇门才可以发现里边的奥秘,所以首先介绍的第一个post请求肯定是登录了,但登录是最难处理的。如果把登录问题这只拦路虎解决了,那么后面问题都迎刃而解。

北京-宏哥的博客 1466

python post请求实例_python接口自动化(八)--发送post请求接口详解

简介上篇介绍完发送get请求接口,大家必然联想到发送post请求接口也不会太难,被聪明的你又猜到了。答案是对的,虽然发送post请求的参考例子很简单,但是实际遇到的情况却是很复杂的,因为所有系统或者软件、网站都是从登录开始的,进入这扇门才可以发现里边的奥秘,所以首先介绍的第一个post请求肯定是登录了,但登录是最难处理的。如果把登录问题这只拦路虎解决了,那么后面问题都迎刃而解。help函数上篇...

weixin_39611930的博客 205

python接口自动化2-发送post请求详解(二)

前言 发送post请求参考例子很简单,实际遇到的情况却是很复杂的,首先第一个post请求肯定是登录了,但登录是最难处理的。登录问题解决了,后面都简单了。 一、查看官方文档 1.学习一个新的模块,其实不用去百度什么的,直接用help函数就能查看相关注释和案例内容。 >>import requests >>help(requests) 2.查看pytho...

weixin_34149796的博客 98

python接口自动化 一个变量 其他接口要用_python接口自动化(八)--发送post请求接口详解)...

简介上篇介绍完发送get请求接口,大家必然联想到发送post请求接口也不会太难,被聪明的你又猜到了。答案是对的,虽然发送post请求的参考例子很简单,但是实际遇到的情况却是很复杂的,因为所有系统或者软件、网站都是从登录开始的,进入这扇门才可以发现里边的奥秘,所以首先介绍的第一个post请求肯定是登录了,但登录是最难处理的。如果把登录问题这只拦路虎解决了,那么后面问题都迎刃而解。help函数上篇...

weixin_39530149的博客 81
上一篇: 全面理解WebSocket与Socket、TCP、HTTP的关系及区别
下一篇: 全面理解WebSocket与Socket、TCP、HTTP的关系及区别
程序员可可
博客等级 码龄2年 3532粉丝 429原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值